Linux下使用openssl的AES加密-ECB模式
2017-04-11 19:25
621 查看
最近需要用到AES加密,为了图方便就打算使用openssl自带的AES加密算法的API来实现。
主要用到了ECB和CBC两种加密模式。
ECB模式如下:
主要用到了ECB和CBC两种加密模式。
ECB模式如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <openssl/aes.h> int main(int argc, char**argv) { if(argc != 2) { printf("使用方法为:\n./ecb text\ntext为待加密的明文。\n"); return -1; } unsigned char *data = argv[1]; //接收参数 printf("原始数据:%s\n",data); int length = ((strlen(data)+AES_BLOCK_SIZE-1)/AES_BLOCK_SIZE)*AES_BLOCK_SIZE; //对齐分组 char userkey[AES_BLOCK_SIZE]; unsigned char *encrypt_result = malloc(length); unsigned char *decrypt_result = malloc(length); AES_KEY key; memset((void*)userkey,'k',AES_BLOCK_SIZE); memset((void*)encrypt_result, 0, length); memset((void*)decrypt_result, 0, length); AES_set_encrypt_key(userkey, AES_BLOCK_SIZE*8, &en_key); printf("加密密钥:%d\n",en_key); int len = 0; /*循环加密,每次只能加密AES_BLOCK_SIZE长度的数据*/ while(len < length) { AES_encrypt(data+len, encrypt_result+len, &en_key); len += AES_BLOCK_SIZE; } printf("加密结果:%s\n",encrypt_result); AES_set_decrypt_key(userkey, AES_BLOCK_SIZE*8, &de_key); printf("解密密钥:%d\n",de_key); len = 0; /*循环解密*/ while(len < length) { AES_decrypt(encrypt_result+len, decrypt_result+len, &de_key); len += AES_BLOCK_SIZE; } printf("解密结果:%s\n",decrypt_result); }
相关文章推荐
- Linux下使用openssl的AES加密-CBC模式
- 在Linux环境下使用OpenSSL对消息和文件进行加密
- AES加密和解密(使用openssl编程)
- 使用openssl_encrypt方法替代mcrypt_encrypt做AES加密
- 使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
- 使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
- AES加密和解密——使用openssl编程
- 【AES】加密和解密(使用openssl编程)
- AES加密和解密(使用openssl编程)
- linux下使用openssl对socket通信加密
- linux下使用openssl命令行加密文件(转)
- linux c md5加密 使用 openssl 本文介绍linux c使用openssl/md5.h加密(转)
- 使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
- linux下使用openssl对socket通信加密
- 在Linux环境下使用OpenSSL对消息和文件进行加密(转载)
- 使用 openssl 的AES 加密
- [Linux] 使用openssl实现RSA非对称加密
- VS中使用openssl/aes加密解密
- 使用AES加密解密在windows上使用没有问题,在Linux(Centos6.5)上出现解密失败的解决方法