openssl为很多软件提供了API,是一个提供加解密服务器的底层基础库,它提供了工其他程序调用的API,同时,也有自己的command line tool可以在控制台直接调用
下面是linux环境下,openssl的AES加解密操作:
示例:
加密文本:"Attack at dawn!!"
Key: "abcdefghijklmnop"
echo -n 'Attack at dawn!!' | openssl enc -v -aes-128-ecb -K 6162636465666768696a6b6c6d6e6f70 -nosalt | hexdump -C
说明:echo -n 去掉echo之后自动加上的换行符
-v 打印输出本次加密/解密中读/写字节的个数
-K 秘钥字符串的十六进制形式,切记:是十六进制,6162636465666768696a6b6c6d6e6f70就是"abcdefghijklmnop"的十六进制的拼接形式
-nosalt 不加盐
输出:
注意:OpenSSL默认使用PKCS#7的padding模式来填充不足128bits的字节块
-nopad 参数说明:
这个参数用来关闭OpenSSL的padding功能,在这种情况下,如果输入的字节数不是块字节(128bits)的整数倍,那么此时会抛异常
例如:
输入的字节数刚好是16个(128bits的整数倍)
输入的直接数不是16字节的整数倍