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

模板网站开发做网站用主机

模板网站开发,做网站用主机,无锡企业网站制作价格,网页设计代码大全一、【原理简介】非对称加密 非对称加密#xff0c;也被称为公钥加密#xff0c;其中使用一对相关的密钥#xff1a;一个公钥和一个私钥。公钥用于加密数据#xff0c;私钥用于解密数据。公钥可以公开分享#xff0c;而私钥必须保密。 密钥生成: 当一个用户或设备希望使用…一、【原理简介】非对称加密 非对称加密也被称为公钥加密其中使用一对相关的密钥一个公钥和一个私钥。公钥用于加密数据私钥用于解密数据。公钥可以公开分享而私钥必须保密。 密钥生成: 当一个用户或设备希望使用非对称加密时要生成一对密钥一个公钥和一个私钥。这两个密钥是数学上相关的但从公钥中计算出私钥在计算上是不可行的。 加密过程: 发送方使用接收方的公钥对消息进行加密。只有持有与那个公钥相对应的私钥的人在这种情况下是接收方才能解密这个消息。 解密过程: 接收方使用其私钥对接收到的加密消息进行解密以恢复原始消息。 安全性: 即使攻击者知道公钥并且他们拦截了加密的消息但由于他们没有私钥所以他们不能解密那个消息。这提供了保密性。由于私钥不是公开的因此无法用它来伪造加密的消息。 数字签名: 除了保密性外非对称加密还可以用于数字签名。发送方使用其私钥对消息的哈希进行加密产生一个数字签名。接收方可以使用发送方的公钥来验证签名确保消息是从发送方发出的并且没有被修改。 主要算法: RSA、ElGamal、ECC椭圆曲线加密是非对称加密的主要算法。 性能问题: 与对称加密相比非对称加密通常计算上更加昂贵所以它在处理大量数据时可能不太实用。在实际场景中经常使用非对称加密来交换一个对称密钥如AES密钥然后使用对称加密来加密实际的数据。 公钥基础设施PKI: PKI是一个结合硬件、软件、策略和标准以实现公钥加密和数字签名服务的体系结构。它包括证书颁发机构CA负责颁发和验证数字证书。 总结非对称加密使用一对密钥来确保数据的安全性和完整性。公钥用于加密而私钥用于解密或签名。 二、【代码】生成秘钥对文件 和 读取秘钥对加密、加密 example 1 生成秘钥对 #include stdio.h #include openssl/pem.h #include openssl/rsa.h/* compile : gcc createRSA_KeyPair.c -I./include -L./lib -lcrypto -Wl,-rpath./lib */ int main() {int ret 0;RSA *r NULL;BIGNUM *bne NULL;int bits 2048;unsigned long e RSA_F4;// 1. 生成 RSA 密钥对bne BN_new();ret BN_set_word(bne, e);if(ret ! 1) {goto free_all;}r RSA_new();ret RSA_generate_key_ex(r, bits, bne, NULL);if(ret ! 1) {goto free_all;}// 2. 保存私钥到 PEM 文件FILE *fp fopen(private_key.pem, wb);if(fp NULL) {perror(Unable to open private key file for writing);goto free_all;}PEM_write_RSAPrivateKey(fp, r, NULL, NULL, 0, NULL, NULL);fclose(fp);// 3. 保存公钥到 PEM 文件fp fopen(public_key.pem, wb);if(fp NULL) {perror(Unable to open public key file for writing);goto free_all;}PEM_write_RSA_PUBKEY(fp, r);fclose(fp);free_all:RSA_free(r);BN_free(bne);return 0; }example 2 使用秘钥对加密、解密 #include stdio.h #include openssl/pem.h #include openssl/rsa.h/* compile : gcc keyFromFile.c -I./include -L./lib -lcrypto -Wl,-rpath./lib */ int main() {// 加载公钥FILE* pubKeyFile fopen(public_key.pem, rb);RSA* rsaPublicKey PEM_read_RSA_PUBKEY(pubKeyFile, NULL, NULL, NULL);fclose(pubKeyFile);// 加载私钥FILE* privKeyFile fopen(private_key.pem, rb);RSA* rsaPrivateKey PEM_read_RSAPrivateKey(privKeyFile, NULL, NULL, NULL);fclose(privKeyFile);const char* plainText Hello, OpenSSL!;char encrypted[4098] {};char decrypted[4098] {};// 使用公钥加密int encryptedLength RSA_public_encrypt(strlen(plainText), (unsigned char*)plainText,(unsigned char*)encrypted, rsaPublicKey, RSA_PKCS1_OAEP_PADDING);if (encryptedLength -1) {printf(Public Encrypt failed \n);return 0;}// 使用私钥解密int decryptedLength RSA_private_decrypt(encryptedLength, (unsigned char*)encrypted,(unsigned char*)decrypted, rsaPrivateKey, RSA_PKCS1_OAEP_PADDING);if (decryptedLength -1) {printf(Private Decrypt failed \n);return 0;}decrypted[decryptedLength] \0;printf(Original: %s\n, plainText);printf(Decrypted: %s\n, decrypted);RSA_free(rsaPublicKey);RSA_free(rsaPrivateKey);return 0; }三、【代码】代码内生成秘钥对并加密解密 c风格 #include stdio.h #include string.h #include openssl/pem.h #include openssl/rsa.h/* compile : gcc RSA.c -I./include -L./lib -lcrypto -Wl,-rpath./lib */ int main() {// 1. create keyint ret 0;RSA *rsa NULL;BIGNUM *bne NULL;int bits 2048;unsigned long e RSA_F4;bne BN_new();ret BN_set_word(bne, e);if(ret ! 1) {goto free_all;}rsa RSA_new();ret RSA_generate_key_ex(rsa, bits, bne, NULL);if(ret ! 1) {goto free_all;}// 2. encryptoconst char* plainText Hello, OpenSSL!;char encrypted[4098] {};int encryptedLength RSA_public_encrypt(strlen(plainText) 1, (unsigned char*)plainText,(unsigned char*)encrypted, rsa, RSA_PKCS1_OAEP_PADDING);if(encryptedLength -1) {printf(Public Encrypt failed \n);goto free_all;}// 3. decryptochar decrypted[4098] {};int decryptedLength RSA_private_decrypt(encryptedLength, (unsigned char*)encrypted,(unsigned char*)decrypted, rsa, RSA_PKCS1_OAEP_PADDING);if(decryptedLength -1) {printf(Private Decrypt failed \n);goto free_all;}decrypted[decryptedLength] \0;printf(Original: %s\n, plainText);printf(Decrypted: %s\n, decrypted);free_all:RSA_free(rsa);BN_free(bne);return 0; }C风格 #include iostream #include vector #include stdexceptextern C{ #include openssl/pem.h #include openssl/rsa.h }class RSAWrapper { public:RSAWrapper() {rsa RSA_new();bne BN_new();BN_set_word(bne, RSA_F4);RSA_generate_key_ex(rsa, 2048, bne, nullptr);}~RSAWrapper() {RSA_free(rsa);BN_free(bne);}std::vectorunsigned char encrypt(const std::string plainText) {std::vectorunsigned char encrypted(RSA_size(rsa));int encryptLength RSA_public_encrypt(plainText.size(),reinterpret_castconst unsigned char*(plainText.c_str()),encrypted.data(),rsa,RSA_PKCS1_OAEP_PADDING);if (encryptLength -1) {throw std::runtime_error(Error during encryption);}return encrypted;}std::string decrypt(const std::vectorunsigned char cipherText) {std::vectorunsigned char decrypted(RSA_size(rsa));int decryptLength RSA_private_decrypt(cipherText.size(),cipherText.data(),decrypted.data(),rsa,RSA_PKCS1_OAEP_PADDING);if (decryptLength -1) {throw std::runtime_error(Error during decryption);}return std::string(reinterpret_castchar*(decrypted.data()));}private:RSA *rsa;BIGNUM *bne; };/* compile : g -stdc11 RSA.cpp -I./include -L./lib -lcrypto -Wl,-rpath./lib */ int main() {try {RSAWrapper rsaWrapper;std::string plainText Hello, OpenSSL C!;auto encrypted rsaWrapper.encrypt(plainText);auto decrypted rsaWrapper.decrypt(encrypted);std::cout Original Text: plainText std::endl;std::cout Decrypted Text: decrypted std::endl;} catch (const std::exception e) {std::cerr Error: e.what() std::endl;}return 0; }
http://www.hkea.cn/news/14380594/

相关文章:

  • 企业网站建设方案范本西安关键词排名软件
  • 永久免费wap建站互联网装修公司
  • 标识标牌网站怎么做今天哈尔滨最新通知
  • 新公司网站建设流程云南制作网站的公司
  • 青岛建设集团官方网站做快递单的网站会不会是骗人的
  • 横沥镇网站建设公司云端商城买流量
  • 免费网页制作网站建设百度快照手机版
  • 成都专业网站制作多少钱长沙网站建设icp备
  • 沈阳做网站直播的公司沈阳城乡建设局官网
  • 网站规划 设计 制作 发布与管理过程西安网站建设qq群号
  • 三门网站建设做打鱼网站的代理
  • 四川省平昌城乡建设厅网站济南企业建站平台
  • 中国空间站图片绘画wordpress建站 图片
  • 西宁专业网站建设在南海建设工程交易中心网站
  • 平台推广网站排名wordpress大图简约主题
  • 旅游网站开发的意义相关资料制作网页需要多少钱
  • 新网站seo安卓app十大开发框架
  • 网站建设与管理的总结聊城做网站的地方
  • 程序员培训机构排名推广优化师
  • 沈阳开发网站公司广州网站建设吧
  • 哪些网站是动态的wordpress首页在哪儿
  • 苏州手机网站seowordpress查询数据库
  • 陕西网站建设推广公司律师微网站建设
  • 网站升级建设网站建设备案不通过
  • 同里做网站青岛网站建设企业建站
  • 广安网站开发wordpress 数据库批量
  • 自助建站系统哪个好用智能建造师证书
  • 网站留言怎么做公司建设网站需要多少钱
  • 做期货与做网站的关系花生壳做局域网站
  • 网站建设中的板块名称网站模版怎么做