密码函数库学习

最近发现有很多现成的密码库,可以直接使用,现在这里记录总结一下:

LibTomCrypt

短小精干,结构清晰明了,速度中等。适合初学密码学的学生和期望对密码学有进一步了解的人士。名气和使用广泛性不如 OpenSSL和Crypto++

LibTomCtypt中实现了以下算法:AES、Safer、Twofish、anubis、Blowfish、Cast5、DES、KASUMI、khazad、KSEED、Multi2、noekeon、RC2、RC5、RC6、skipjack、Xtea。

 

 

OpenSSL

C语言实现,整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。支持跨平台。代码量比较庞大,经过很多次调整,目前的结构不再清晰明了,要代码剥离的话非常痛苦,使用起来不是很方便。

下载

链接

安装 

 

参考:链接

注意:安装后需要配置系统变量才能咋CMD中使用

使用

1、help

消息摘要算法

消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,目前可以被解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。

openssl实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA和RIPEMD。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。

摘要一般有两个作用:1)做信息完整性校验;2)保存密码,有些密码是直接在数据库中采用MD5(真实密码值)保存的,有的还进行加盐处理,使其难以破解,这样密码只能重置,无法告诉你原始过程,因为摘要是不可逆的。

openssl dgst
常用选项有:
[-md5|-md4||-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一种摘要算法
-out filename:将摘要的内容保存到指定文件中
帮助:man dgst

1、MD5

2、MD4

3、blake2b512

4、SM3

加解密算法

 

目录结构

1、Crypto目录

是OpenSSL所有加密算法源码文件和一些PKI相关标准源码存放的目录(如X509源码文件)。包含了OpenSSL密码算法库的所有内容。是OpenSSL中最重要的目录。

2、SSL目录存放了SSL协议各个版本的实现源码(SSL2.0、SSL3.0)以及TLS1.0的协议源码文件。包含了OpenSSL协议库的所有内容。

3、Doc目录是OpenSSL使用的说明文档存放的目录。包含三个部分:应用程序说明文档加密算法库API说明文档以及SSL协议API说明文档

4、APPs目录存放了OpenSSL所有应用程序的源代码文件。即OpenSSL中的各个命令的实现代码。

5、Demos目录OPenSSL应用的实例。主要由一些openSSL的爱好者写的应用实例的例子,在刚开始学习之前,可以研究研究。

6、Include目录存放了使用OpenSSL的库进行编程的时候可能需要使用到的一些头文件。

7、test目录存放了OpenSSL自身功能测试程序的源码文件。

 

 

 

Crypto++

C++语言实现,代码庞大且复杂,使用起来不方便。支持跨平台

 

mbedtls

ARM mbedtls使开发人员可以非常轻松地在(嵌入式产品中加入加密和 SSL/TLS 功能。它提供了具有直观的 API 和可读源代码的 SSL 库。该工具即开即用,可以在大部分系统上直接构建它,也可以手动选择和配置各项功能。

mbedtls 库提供了一组可单独使用和编译的加密组件,还可以使用单个配置头文件加入或排除这些组件。 
从功能角度来看,该mbedtls分为三个主要部分: 

    • - SSL/TLS 协议实施。 
    • - 一个加密库。 
    • - 一个 X.509 证书处理库。

参考

1、密码库LibTomCrypt学习记录——目录

2、mbedtls入门和使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章