首页 > 其他 > 详细

使用 openssl 的AES 加密

时间:2015-07-31 18:37:55      阅读:234      评论:0      收藏:0      [点我收藏+]

源码:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用 openssl 的AES 加密

原文:http://blog.csdn.net/u011641885/article/details/47171585

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!