源码:
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
#include <openssl/aes.h>
int main(int argc, char *argv[]){
unsigned char buf[16] = "1234567890abcde";
unsigned char buf2[16];
unsigned char buf3[16];
// 密钥为 0
unsigned char aes_keybuf[32] = {0};
AES_KEY aeskey;
// 设置加密密钥
AES_set_encrypt_key(aes_keybuf, 8 * sizeof(aes_keybuf), &aeskey);
// 加密
AES_encrypt(buf,buf2,&aeskey);
printf("%s\n",buf2);
//设置解密密钥
AES_set_decrypt_key(aes_keybuf, 8 * sizeof(aes_keybuf), &aeskey);
//解密
AES_decrypt(buf2, buf3, &aeskey);
printf("%s\n",buf3);
return 0;
}
openssl API 说明
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
##设置加密密钥
## userKey 为用户定义密钥
## bits 密钥长度
## 生成的密钥(加密函数会用到)
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
##设置解密密钥
## userKey 为用户定义密钥
## bits 密钥长度
## 生成的密钥(解密函数会用到)
//加密函数
void AES_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
//解密函数
void AES_decrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
个人总结:
openssl API 大概使用步骤为
设置 加密密钥 –> 加密数据
设置 解密密钥 –> 解密数据
关于密钥,可以自定义;
另外需要注意的就是,加密解密的数据缓冲区必须要是16的倍数(openssl 内部实现的时候,会以16个char 为单位读取数据,同样,以上程序只会加密16个字节的数据…需要加密更长的字符串,把程序修改下即可)
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-02 21:37:57