生成AES密钥对

时间:2021-06-12
本文章向大家介绍生成AES密钥对,主要包括生成AES密钥对使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

OpenSSL中 AES 加解密的API:

  1. 生成加密/解密的Key

    #include <openssl/aes.h>
    # define AES_BLOCK_SIZE 16	// 明文分组的大小
    // 加密的时候调用
    // aes中的秘钥格式 AES_KEY
    // 封装加密时候使用的秘钥
    AES_KEY key;
    int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
    // 封装解密时候使用的秘钥
    int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
    
    参数名称 描述
    userkey 对称加密的秘钥-> 字符串, 长度: 16, 24, 32byte
    bites 指定秘钥的长度: 单位->bit
    key 传出参数
  2. CBC方式加密 - 密码分组链接模式

    void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
                         size_t length, const AES_KEY *key,
                         unsigned char *ivec, const int enc);
    	参数:
    		- in: 要加密/解密的数据
    		- out: 传出参数
    			- 加密: 存储密文
    			- 解密: 存储明文
    		- length: 修改第一个参数in的长度
    			- (len = (字符串长度 + \0) % 16) == 0
                - 如果不是在函数内部会自动填充
                	- 实际长度: ((len / 16) + 1 ) * 16
            - key: 初始化之后的秘钥
            - ivec: 初始化向量, 字符串 ==> 长度和分组长度相同
    		- enc: 指定数据要解密还是解密
    			- # define AES_ENCRYPT     1 -> 加密
    			- # define AES_DECRYPT     0 -> 解密
    
    

原文地址:https://www.cnblogs.com/lodger47/p/14878644.html