OpenSSL之AES用法

OpenSSL之AES用法,第1张

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种分组加密标准。这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一 。

本文假设你已经安装好了OpenSSL,并且持有一份1.1.1的源码。

AES相关的头文件在aes.h中、源文件在crypto/aes目录中。

这里定义了加密和解密的类型。

这里定义了分组最大轮数和块大小。

这个结构定义了AES的密钥上下文。相关字段含义:

rd_key —— 每轮的子密钥。

rounds —— 加解密轮数。

在1.1.1中,大多数的数据结构已经不再向使用者开放,从封装的角度来看,这是更合理的。如果你在头文件中找不到结构定义,不妨去源码中搜一搜。

int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key)

设置加密密钥,bits必须是128、192、256,否则会失败。

成功返回0,失败返回负数。

int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key)

设置解密密钥,bits必须是128、192、256,否则会失败。

成功返回0,失败返回负数。

void AES_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key)

执行AES ECB分组加密。

void AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key)

执行AES ECB分组解密。

void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key, const int enc)

执行AES ECB分组加解密。其实是AES_encrypt()和AES_decrypt()的简单封装。

其内部实现为:

void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t length,

const AES_KEY *key, unsigned char *ivec, const int enc)

执行AES CBC分组加解密。

ivec为16字节的向量,每次加解密都需要,首次为初使向量,后续为前一次的密文分组。

其内部实现为:

下面这个例子演示了AES ECB分组加解密的基本用法。在实际项目中,需要程序员加以封装,并充分考虑数据填充问题。

输出:

AES_set_encrypt_key ret:0

AES_set_decrypt_key ret:0

6dac1c56e747fae03acf8c6891e428e0

31323334353637383132333435363738

哥门 <openssl/aes.h>里 的openssl只是文件夹名字而已,

在linux下面 /usr/local/include/ /usr/include/ 这两个路径是默认引用的。

所以你没加 -I 也是可以编译的 。

当交叉编译时,那就完全不一样了,必须配置好所有路径。

其压缩率比高,3.x 采用了更先进的压缩算

法,是现在压缩率较大、压缩速度较快的格式之一。 3.3 增加了扫描压缩文件内病毒、解压缩“增强压缩” ZIP 压缩文件的功能, 升级了分

卷压缩的功能等。

主要特点:1、 对 RAR 和 ZIP 的完全支持;

2、 支持 ARJ、CAB、LZH、ACE、TAR、GZ、UUE、BZ2、JAR、ISO 类型文件的解压;

3、 多卷压缩功能;

4、 创建自解压文件,可以制作简单的安装程序,使用方便;

5、 压缩文件大小可以达到 8,589,934 TB;

6、 锁定和强大的数据恢复记录功能,对数据的保护无微不至,新增的恢复卷的使用功能更强大;

7、 强大的压缩文件修复功能,最大限度恢复损坏的 rar 和 zip 压缩文件中的数据,如果设置了恢复记录,甚至可能完全恢复;

8、 支持用户身份校验(AV 校验,必须注册);

9、 强大简易的备份功能;

10、工业标准 AES 加密;

11、提供固实格式的压缩算法,在很大程度上增加类似文件或许到小文件的压缩率;

12、在压缩前估计文件的压缩率的功能;

13、可以保存 NTFS 数据流和安全数据;

14、与资源管理器整合, *** 作简单快捷;

15、支持 Unicode 编码文件名;

16、强大的常规、文本、多媒体和可执行文件压缩。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8173706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存