当前位置: 首页 > news >正文

广州网站建设讯度有什么办法做自己的网站

广州网站建设讯度,有什么办法做自己的网站,专注集团网站建设,如何建立个人网站的步骤RSA算法是一种非对称加密算法#xff0c;由三位数学家Rivest、Shamir和Adleman共同发明#xff0c;以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题#xff0c;即对于一个非常大的合数#xff0c;将其分解为两个质数的乘积是非常困难的。 RSA算法是一种常用…RSA算法是一种非对称加密算法由三位数学家Rivest、Shamir和Adleman共同发明以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题即对于一个非常大的合数将其分解为两个质数的乘积是非常困难的。 RSA算法是一种常用的非对称加密算法与对称加密算法不同RSA算法使用一对非对称密钥分别为公钥和私钥公钥和私钥是成对生成的公钥可以公开用于加密数据和验证数字签名而私钥必须保密用于解密数据和生成数字签名。因此RSA算法的使用场景是公钥加密、私钥解密或者私钥加密、公钥解密。 OpenSSL库中提供了针对此类算法的支持但在使用时读者需要自行生成公钥与私钥文件在开发工具包内有一个openssl.exe程序该程序则是用于生成密钥对的工具当我们需要使用非对称加密算法时则可以使用如下命令生成公钥和私钥。 生成私钥: openssl genrsa -out rsa_private_key.pem 1024生成公钥: openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 读者执行上述两条命令后即可得到rsa_private_key.pem私钥以及rsa_public_key.pem公钥如下图所示 在使用非对称加密时读者需要分别导入所需要的头文件这其中就包括了rsa.h用于处理加密算法的库以及pem.h用于处理私钥的库这两个库是使用RSA时必须要导入的。 #include iostream #include string #include openssl/err.h #include openssl/rsa.h #include openssl/pem.h #include openssl/crypto.hextern C { #include openssl/applink.c }#pragma comment(lib,libssl.lib) #pragma comment(lib,libcrypto.lib)20.2.1 公钥加密私钥解密 RSA公钥用于加密数据和验证数字签名私钥用于解密数据和生成数字签名通常用于公钥加密、私钥解密的场景具有较高的安全性但加密和解密速度较慢因此通常采用一种混合加密方式即使用RSA算法加密对称加密算法中的密钥再使用对称加密算法加密数据以保证数据的机密性和加密解密的效率。 首先我们来实现公钥加密功能如下Public_RsaEncrypt函数该函数接受两个参数分别是需要加密的字符串以及公钥文件代码中首先通过fopen()打开一个公钥文件并通过PEM_read_RSA_PUBKEY函数读入并初始化公钥文件接着调用RSA_public_encrypt该函数主要用于实现公钥加密当加密成功后返回加密后的文本内容类型是字符串。 // 公钥加密 std::string Public_RsaEncrypt(const std::string str, const std::string path) {RSA* rsa NULL;FILE* file NULL;char* ciphertext NULL;int len 0;int ret 0;file fopen(path.c_str(), r);if (file NULL){return std::string();}rsa PEM_read_RSA_PUBKEY(file, NULL, NULL, NULL);if (rsa NULL){ERR_print_errors_fp(stdout);fclose(file);return std::string();}len RSA_size(rsa);ciphertext (char*)malloc(len 1);if (ciphertext NULL){RSA_free(rsa);fclose(file);return std::string();}memset(ciphertext, 0, len 1);ret RSA_public_encrypt(str.length(), (unsigned char*)str.c_str(), (unsigned char*)ciphertext, rsa, RSA_PKCS1_PADDING);if (ret 0){ERR_print_errors_fp(stdout);free(ciphertext);RSA_free(rsa);fclose(file);return std::string();}std::string s(ciphertext, ret);free(ciphertext);RSA_free(rsa);fclose(file);return s; }与公钥加密方法类似Private_RsaDecrypt函数用于使用私钥进行解密该函数接受两个参数第一个参数是加密后的字符串数据第二个参数则是私钥的具体路径函数中通过PEM_read_RSAPrivateKey实现对私钥的初始化并通过RSA_private_decrypt函数来实现对特定字符串的解密操作。 // 私钥解密 std::string Private_RsaDecrypt(const std::string str, const std::string path) {RSA* rsa NULL;FILE* file NULL;char* plaintext NULL;int len 0;int ret 0;file fopen(path.c_str(), r);if (file NULL){return std::string();}rsa PEM_read_RSAPrivateKey(file, NULL, NULL, NULL);if (rsa NULL){ERR_print_errors_fp(stdout);fclose(file);return std::string();}len RSA_size(rsa);plaintext (char*)malloc(len 1);if (plaintext NULL){RSA_free(rsa);fclose(file);return std::string();}memset(plaintext, 0, len 1);ret RSA_private_decrypt(str.length(), (unsigned char*)str.c_str(), (unsigned char*)plaintext, rsa, RSA_PKCS1_PADDING);if (ret 0){ERR_print_errors_fp(stdout);free(plaintext);RSA_free(rsa);fclose(file);return std::string();}std::string s(plaintext, ret);free(plaintext);RSA_free(rsa);fclose(file);return s; }这两段代码的调用也非常容易如下代码片段则分别实现了对text字符串的加密与解密功能使用公钥加密使用私钥解密。 int main(int argc, char* argv[]) {std::string text hello lyshark;// 公钥加密std::string public_path d://rsa_public_key.pem;std::string encry Public_RsaEncrypt(text, public_path);// std::cout 加密后文本: encry std::endl;// 私钥解密std::string private_path d://rsa_private_key.pem;std::string decry Private_RsaDecrypt(encry, private_path);std::cout 解密后文本: decry std::endl;system(pause);return 0; }这段代码输出效果如下图所示 20.2.2 私钥加密公钥解密 在RSA算法中私钥加密公钥解密并不是一种常见的使用方式因为私钥是用于签名而不是加密的。通常的使用方式是使用公钥加密私钥解密这样可以保证数据的机密性只有拥有私钥的人才能解密数据但在某些时候我们不得不将这个流程反过来使用私钥加密并使用公钥解密。 私钥加密的封装代码如下所示其中Private_RsaEncrypt用于实现私钥加密该函数同样接受两个参数分别是待加密字符串以及当前私钥路径函数的核心部分是RSA_private_encrypt该函数可用于使用私钥对数据进行加密。 // 私钥加密 std::string Private_RsaEncrypt(const std::string str, const std::string path) {RSA* rsa NULL;FILE* file NULL;char* ciphertext NULL;int len 0;int ret 0;file fopen(path.c_str(), r);if (file NULL){return std::string();}rsa PEM_read_RSAPrivateKey(file, NULL, NULL, NULL);if (rsa NULL){ERR_print_errors_fp(stdout);fclose(file);return std::string();}len RSA_size(rsa);ciphertext (char*)malloc(len 1);if (ciphertext NULL){RSA_free(rsa);fclose(file);return std::string();}memset(ciphertext, 0, len 1);ret RSA_private_encrypt(str.length(), (unsigned char*)str.c_str(), (unsigned char*)ciphertext, rsa, RSA_PKCS1_PADDING);if (ret 0){ERR_print_errors_fp(stdout);free(ciphertext);RSA_free(rsa);fclose(file);return std::string();}std::string s(ciphertext, ret);free(ciphertext);RSA_free(rsa);fclose(file);return s; }公钥解密的实现方法与加密完全一致代码中Public_RsaDecrypt函数用于实现公钥解密其核心功能的实现依赖于RSA_public_decrypt这个关键函数。 // 公钥解密 std::string Public_RsaDecrypt(const std::string str, const std::string path) {RSA* rsa NULL;FILE* file NULL;char* plaintext NULL;int len 0;int ret 0;file fopen(path.c_str(), r);if (file NULL){return std::string();}rsa PEM_read_RSA_PUBKEY(file, NULL, NULL, NULL);if (rsa NULL){ERR_print_errors_fp(stdout);fclose(file);return std::string();}len RSA_size(rsa);plaintext (char*)malloc(len 1);if (plaintext NULL){RSA_free(rsa);fclose(file);return std::string();}memset(plaintext, 0, len 1);ret RSA_public_decrypt(str.length(), (unsigned char*)str.c_str(), (unsigned char*)plaintext, rsa, RSA_PKCS1_PADDING);if (ret 0){ERR_print_errors_fp(stdout);free(plaintext);RSA_free(rsa);fclose(file);return std::string();}std::string s(plaintext, ret);free(plaintext);RSA_free(rsa);fclose(file);return s; }有了上述方法那么调用代码则变得很容易如下所示我们将text字符串使用私钥进行加密并使用公钥进行解密。 int main(int argc, char* argv[]) {std::string text hello lyshark;// 私钥加密std::string private_path d://rsa_private_key.pem;std::string encry Private_RsaEncrypt(text, private_path);// std::cout 加密后文本: encry std::endl;// 公钥解密std::string public_path d://rsa_public_key.pem;std::string decry Public_RsaDecrypt(encry, public_path);std::cout 解密后文本: decry std::endl;system(pause);return 0; }这段代码输出效果如下图所示
http://www.pierceye.com/news/778572/

相关文章:

  • 镇江建设局网站开发公司采购招聘
  • 阿里云编辑建设好的网站凡客官网登录入口网址
  • 后盾网原创实战网站建设教程北京app网站建设价格
  • 简述网站建设过程步骤wordpress英文建站
  • 网站开发 mvc有孩子做的网站
  • 自己做的网站如何推广wordpress 主题页脚
  • 数据库型网站怎么把电脑当服务器做网站
  • 东莞网站建设品牌公司如何做电子书网站
  • 免费学做美食视频网站有哪些百度是国企还是央企
  • wordpress 网站关键词设置wordpress 上传主机
  • h5电子商务网站如何查询关键词的搜索量
  • 网站导航栏兼容性网站建设的主要技术指什么软件
  • 如何抄袭网站400靓号手机网站建设
  • 大兴网站建设价格怎样建设好网站
  • 三维家是在网站上做还是在app上国内新闻最新5条
  • 呼伦贝尔网站设计wordpress如何关闭主题
  • 苏州网站制作网站建设淮安住房和城乡建设厅网站
  • 房产中介网站wordpress模板mip
  • 汽车租赁网站怎么做沈阳网站开发程序员工资
  • 网站建设教程搭建汽岁湖南岚鸿专注交城有做网站的吗
  • 网站开发怎么连接sqlserver建设网站怎么收费标准
  • 万网网站模板购买北京南站核酸检测地点
  • 南京城乡建设网站公司做网站哪个好
  • 有没有学做衣服的网站广告设计公司有什么岗位
  • 什么网站做免单衣服厦门设计师网站
  • 深圳网站建设 龙华信科易乐自助建站
  • 徐老师在那个网站做发视频搜索引擎优化特点
  • 工信部网站备案批准文件重庆装修网站建设
  • 网站被攻击了怎么办网站优化 价格查询
  • 北京网站建设公司怎么样怎么做qq盗号网站