基于OpenSSL的一些常用加密签名算法

泪湿孤枕 提交于 2020-01-07 05:54:36

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

目前包括:MD5、SHA512、DES、RSA加解密、RSA+MD5签名验证算法,在openssl基础上再进行封装,使用简单,头文件需要包含openssl库,可以使用vcpkg自动管理,省去繁琐的配置工程的过程。

该RSA签名算法中,已将输入明文做了MD5处理。

注意RSA加密算法E,解密算法D,与RSA签名算法S,验证算法V,这里的EDSV互补相等,不要认为加密过程的E使用公钥,验证过程的V也使用公钥,就把两者混为一谈。

 

一看头文件就显得容易使用了

class COpenSSL
{
public:
	COpenSSL();
	~COpenSSL();

	// ---- md5摘要哈希 ---- // 
	void md5(const std::string &srcStr, std::string &encodedHexStr);

	// ---- sha256摘要哈希 ---- //  
	void sha256(const std::string &srcStr, std::string &encodedHexStr);

	// ---- des对称加解密 ---- //    
	// 加密 ecb模式    
	std::string des_encrypt(const std::string &clearText, const std::string &key);
	// 解密 ecb模式    
	std::string des_decrypt(const std::string &cipherText, const std::string &key);

	// 函数方法生成密钥对   
	void generateRSAKey(std::string strKey[2]);

	// 命令行方法生成公私钥对(begin public key/ begin private key)  
	// 找到openssl命令行工具,运行以下  
	// openssl genrsa -out prikey.pem 1024   
	// openssl rsa - in privkey.pem - pubout - out pubkey.pem  

	// 公钥加密    
	std::string rsa_pub_encrypt(const std::string &clearText, const std::string &pubKey);
	// 私钥解密    
	std::string rsa_pri_decrypt(const std::string &cipherText, const std::string &priKey);

	//私钥签名
	std::string signMessage(std::string privateKey, std::string plainText);
	//公钥验证
	bool verifySignature(std::string &publicKey, std::string &plainText, std::string &signatureBase64);

 

项目文件:https://gitee.com/feistel/some_openssl

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!