文件的加解密openssl工具

生活中的加密的方式: 一个锁可以一把钥匙,有钥匙的就可以解锁和加锁

对称方式加密: 例如rc4加密,大家都有一个固定字符串,生成key,这个key可以对文件加密,也可以解密

代码:

生成key RC4_KEY rc4_key;
RC4_set_key(&rc4_key,strlen(source),source);

利用key加密 RC4(&rc4_key,strlen(src),src,des);

利用key解密 RC4(&rc4_key,strlen(des),des,src);



生活中加密方式: 一个锁配了很多把钥匙

非对称加密: 例如rsa加密,公钥可以和很多个私钥互相对文件加解密

代码:

生成公钥和私钥 openssl genrsa -out  rsa.key 1024
opRSA *rsa = RSA_generate_key(1024, 65537, NULL, NULL);bout rsa_pub.key
RSA *rsa = RSA_generate_key(1024, 65537, NULL, NULL);          
读取公钥并加密 p_rsa=PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL)
RSA_public_encrypt(rsa_len,str,des,p_rsa,RSA_NO_PADDING)
读取私钥并解密 p_rsa=PEM_read_RSAPrivateKey(file,NULL,NULL,NULL)
RSA_private_decrypt(rsa_len,str,p_de,p_rsa,RSA_NO_PADDING)



生活中的方式: 钥匙很小,会容易丢,不显眼找不到,可以加上一些好看的挂件就容易找了

base64编码: 加过密的数据在传送过程中,会有很多特殊符号可能会影响到协议,base64编码将原来的8位一个字节,只取6位,

这样3个字节,24位可以化为4个6位,各加两个高位0,只有0-64大小的assic码值

代码:
文件会变大 ret = EVP_EncodeBlock(outbuffer,inbuffer,bytes);
文件会变小 ret = EVP_DecodeBlock(inbuffer,in_buffer,strlen(in_buffer));

符号“=” 如果源数据不是3字节的整倍数,那么需要添加为3字节整数倍,base64就会多一到两个字节,符号为=

首先”=“会解码后为'/0',那么空间和二进制都会变,去除=可以手动也可以分步内部调用evp函数


生活中的方式: 大家见过办假证的广告吧,辨别真伪有很多办法

md5,sha摘要 有时候文件加解密都没问题,但是如何判断文件的内容是一致的呢,信息摘要鉴定

代码:
取值 openssl sha file echo " " | openssl sha
SHA(buffer,strlen(buffer),outmd);

签名 获取文件后,signature字段之前为数据,根据数据得到sha值

根据signature的内容,进行rsa解密得到第二个sha值,两个值对比相同,即为一致


生活中的方式: 买锁的时候都配有钥匙,因为是一个厂家生产的,那么厂家可信吗?

CA认证 访问或支付时候,怎么确认钱或数据去了该去的地方,ca认证帮大家确认