openssl加密套件-学习-实例-笔记

本文详细介绍了如何使用OpenSSL为socket通信添加SSL支持,涉及从编译安装到使用其丰富的散列(如MD5、SM3)和加解密算法(如RSA、AES、SM4)的功能,以及如何在CBC模式下执行加密和解密操作。
摘要由CSDN通过智能技术生成

openssl加密套件

openssl,众所周知用于对socket通信过程添加ssl支持,曾强安全性

实际上还可以使用里面丰富的加解密算法,对数据进行加解密。

从编译安装开始

github 选择所需要的版本
而后编译安装

# 依赖
yum install g++ tcl
# 解压后,安装
./config --prefix=/path
make
make install_sw

# 查看信息
openssl version

到加解密结束

经典类型是散列、加解密两个大类。

散列

最出名的md5,而国内要求大抵为SM3
使用命令openssl list -digest-algorithms查看当前部署的版本支持的算法。

使用方法

const EVP_MD *pMD;
EVP_MD_CTX *pCtx;

// 指定算法
pMD = EVP_sm3();
pCtx = EVP_MD_CTX_new();
// 初始化加密上下文
EVP_DigestInit_ex(pCtx, pMD, NULL);
// 添加数据, 可以反复添加数据,比如加盐就是这里加一个update,把盐值传进去。最终结果长度一致。
EVP_DigestUpdate(pCtx, data, datelen);
// 提取数据
EVP_DigestFinal_ex(pCtx, result, &resLen);
EVP_MD_CTX_free(pCtx);

加解密

出名的如(非对称)rsa, (对称)aes, SM4等。国内指定SM4较为合适,对称,快速。

命令openssl list -cipher-algorithms查看支持的加解密算法。

加密:

const EVP_CIPHER *pCipher;
EVP_CIPHER_CTX *pCtx;

// 指定算法
pCipher = EVP_sm4_cbc();
pCtx = EVP_CIPHER_CTX_new();
// 初始化加密上下文
EVP_EncryptInit_ex(pCtx, pCipher, NULL, "key", NULL);
// 添加数据
EVP_EncryptUpdate(pCtx, data, &datelen, oriData, oriDatalen);
resLen = datalen;
// 提取数据
EVP_EncryptFinal_ex(pCtx, data + datelen, &datelen);
EVP_CIPHER_CTX_free(pCtx);
resLen += dataLen;

解密:

const EVP_CIPHER *pCipher;
EVP_CIPHER_CTX *pCtx;

// 指定算法
pCipher = EVP_sm4_cbc();
pCtx = EVP_CIPHER_CTX_new();
// 初始化加密上下文
EVP_DecryptInit_ex(pCtx, pCipher, NULL, "key", NULL);
// 添加数据
EVP_DecryptUpdate(pCtx, data, &datelen, oriData, oriDatalen);
resLen = datalen;
// 提取数据
EVP_DecryptFinal_ex(pCtx, data + datelen, &datelen);
EVP_CIPHER_CTX_free(pCtx);
resLen += dataLen;

参考链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值