aes加密字符串 openssl_用openssl实现aes加密

实验步骤:

一,下载并安装gcc,openssl,(OpenSSL是一个安全层密码库,囊括主要的、常用的和证书封装管理功能及协议,并提供丰富的应用程序供测试或其它目的使用。)

yum -y install gcc

wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz

解压openssl

tar zxf openssl-1.0.2h.tar.gz

二,把openssl移动到/usr/local目录下

mv openssl /usr/local

三,在/usr/local、openssl目录下创建一个文件enc_dec.c用来存储算法程序

四,把所需要的规则写到makefile文件中

LIB=-L/usr/local/lib

-lcrypto

all:${OBJ}

cc

${OBJ}-o app.exe ${LIB}

${OBJ}:enc_dec.c

cc

-c enc_dec.c -o ${OBJ}

.PHONY:clean

clean:

rm

${OBJ}

~

五,编译算法程序:cc

enc_dec.c -o app.exe -L/usr/local/lib -lcrypto没有报错,然后用make检验也没有报错。

六,执行./app.exe文件

程序代码:

#include

#include

#include

#include

#include

#include

#include

void

HexCode(unsigned char* data, int len)

{

int

i = 0;

for(;

i < len; i++)

printf("%02x",

(unsigned int)data[i]);

printf("\n");

}

int

main()

{

const

int len = 3;

char

userkey[AES_BLOCK_SIZE];

unsigned

char *data = malloc(AES_BLOCK_SIZE*len);

unsigned

char *cipher = malloc(AES_BLOCK_SIZE*len);

unsigned

char *plain = malloc(AES_BLOCK_SIZE*len);

int

i;

AES_KEY

key;

memset((void*)userkey,

0, AES_BLOCK_SIZE);

memset((void*)data,

0, AES_BLOCK_SIZE*len);

memset((void*)cipher,

0, AES_BLOCK_SIZE*len);

memset((void*)plain,

0, AES_BLOCK_SIZE*len);

strcpy(userkey,

"userkey");

strcpy(data,

"original text");

printf("original

text:\n");

HexCode(data,

AES_BLOCK_SIZE*len);

AES_set_encrypt_key(userkey,

128, &key);

for(i

= 0; i < len; i++)

AES_ecb_encrypt(data+i*AES_BLOCK_SIZE, cipher+i*AES_BLOCK_SIZE,

&key, AES_ENCRYPT);

printf("cipher:\n");

HexCode(cipher,

AES_BLOCK_SIZE*len);

AES_set_decrypt_key(userkey,

128, &key);

for(i

= 0; i < len; i++)

AES_ecb_encrypt(cipher+i*AES_BLOCK_SIZE, plain+i*AES_BLOCK_SIZE,

&key, AES_DECRYPT);

printf("plain:\n");

HexCode(plain,

AES_BLOCK_SIZE*len);

free(data);

free(cipher);

free(plain);

return

0;

}

实现结果:

7c948fe89e7f47d50a1e36e313bbd4d9.png

疑难小结:一开始输入cc

enc_dec.c -o app.exe -L/usr/local/lib -lcrypto的时候出现如下错误

acb77e4b75d4ead041a7b6f6a91ef070.png

原因是:需要和OpenSSL链接的文件(库和头文件)在你Linux平台上缺少

解决办法:centos用命令$

sudo yum install openssl-devel

ubuntu用$

sudo apt-get install libssl-dev.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值