openssl的加解密,签名,验签代码
来源:互联网 发布:linux shadowsock 编辑:程序博客网 时间:2024/06/05 01:13
加密算法:
QString EncryData(const char *publicKey, const char *content)//publicKey:公钥,content:要加密的内容{ RSA *p_rsa = GetKeyRSA(publicKey,1);//将文本公钥转化成 RSA 对象 int rsa_len = RSA_size(p_rsa); char p_e[1000] = {0}; if(RSA_public_encrypt(strlen(content), (unsigned char *)content, (unsigned char*)p_e, p_rsa, RSA_PKCS1_PADDING)<0) { qDebug()<<"RSA_public_encrypt err"; return ""; } while (true) {RSA_PKCS1_PADDING 加密后是128的长度,不知道为什么有时加密长度不为128 if(strlen(p_e) == 128){ break; } if(RSA_public_encrypt(strlen(content), (unsigned char *)content, (unsigned char*)p_e, p_rsa, RSA_PKCS1_PADDING)<0) qDebug()<<"RSA_public_encrypt err"; mSleep(50); } RSA_free(p_rsa); char * bp_e = base64Encode(p_e,rsa_len); return QString::fromLatin1(bp_e);}解密算法:
void DecryData(const char *privateKey,const char* content){ qDebug()<<"------RSA_private_decrypt-------"; RSA *p_rsa = GetKeyRSA(privateKey,2); int rsa_len = RSA_size(p_rsa); char p_de[1000] = {0}; std::string unBase64 = base64_decode(content); if (RSA_private_decrypt(unBase64.length(), (unsigned char *)unBase64.c_str(), (unsigned char*)p_de, p_rsa, RSA_PKCS1_PADDING)<0) {//RSA_PKCS1_PADDING qDebug()<<"RSA_private_decrypt err"; return ; } RSA_free(p_rsa); qDebug()<<"RSA_private_decrypt:"<<p_de;}
私钥签名:
QString Widget::rsa_signA(const char *privateKey,const char* content){ char p_sign[1000] = {0}; RSA *p_rsa = GetKeyRSA(privateKey,2); int rsa_len = RSA_size(p_rsa); if(RSA_sign(NID_md5,(unsigned char*)content,strlen(content),(unsigned char*)p_sign,(unsigned int *)&rsa_len,p_rsa)<0){ qDebug()<<"RSA_SIGN FAILED"; return ""; } RSA_free(p_rsa); char *sign = base64Encode(p_sign,rsa_len); qDebug()<<"sign:"<<sign;return QString::fromLatin1(sign);}
公钥验签:
bool rsa_verify(const char *publicKey,const char* sign,const char *content){ char p_ver[1000] = {0}; RSA *p_rsa = GetKeyRSA(publicKey,1); int rsa_len = RSA_size(p_rsa); std::string dSign = base64_decode(sign); int res = RSA_verify(NID_md5,(unsigned char*)content,strlen(content) ,(unsigned char*)dSign.c_str(),dSign.length() ,p_rsa); RSA_free(p_rsa); qDebug()<<"res:"<<res; if(res == 1){ qDebug()<<"RSA_verify success:"<<res; }else{ qDebug()<<"RSA_verify FAILED"; } return res == 1;}
代码下载地址:http://download.csdn.net/download/xzpblog/9986593
阅读全文
0 0
- openssl的加解密,签名,验签代码
- SHA256withRSA签名验签 & BASE64加解密
- RSA加解密与签名验签
- RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- openssl rsa 加密,解密,签名,验签简单例子
- 新手浅谈证书加解密、签名验签
- openssl在java端的加解密和签名验证
- 加密解密、签名验签
- 加密解密 签名验签
- 加密 解密 签名 验签
- 私钥签名解密公钥加密验签代码
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- RSA加密、解密、签名、验签 DSA签名、验签
- RSA加解密,加签以及验签。
- 加密解密 签名验签学习笔记
- php rsa 加密、解密、签名、验签
- Android推荐一个查看资源文件引用次数的小插件
- GPIO驱动框架
- 虚拟机字节码执行引擎
- JDK9干货
- Java 访问权限控制
- openssl的加解密,签名,验签代码
- CRichEditDoc下保存文档出现\rtf1\ansi\ansicpg936\deff0的解决方法
- Mybatis的等标签详解
- Facebook AI 研发主管:一味模仿人脑将阻碍AI的发展
- 详解Android中IntentService的使用方法
- c#问题汇总
- Java main方法背后的故事?
- iOS-为你的应用兼容iPhone X
- C++中的explicit关键字