使用 openssl 的AES 加密

源码:

#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个字节的数据…需要加密更长的字符串,把程序修改下即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值