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

搭建企业资料网站专业网站建设公司

搭建企业资料网站,专业网站建设公司,杭州企业网站建设 哪里好,企业网站推广联系方式一、【原理简介】非对称加密 非对称加密,也被称为公钥加密,其中使用一对相关的密钥:一个公钥和一个私钥。公钥用于加密数据,私钥用于解密数据。公钥可以公开分享,而私钥必须保密。 密钥生成: 当一个用户或设备希望使用…

一、【原理简介】非对称加密

非对称加密,也被称为公钥加密,其中使用一对相关的密钥:一个公钥和一个私钥。公钥用于加密数据,私钥用于解密数据。公钥可以公开分享,而私钥必须保密。

  1. 密钥生成:

    • 当一个用户或设备希望使用非对称加密时,要生成一对密钥:一个公钥和一个私钥。这两个密钥是数学上相关的,但从公钥中计算出私钥在计算上是不可行的。
  2. 加密过程:

    • 发送方使用接收方的公钥对消息进行加密。只有持有与那个公钥相对应的私钥的人(在这种情况下是接收方)才能解密这个消息。
  3. 解密过程:

    • 接收方使用其私钥对接收到的加密消息进行解密,以恢复原始消息。
  4. 安全性:

    • 即使攻击者知道公钥并且他们拦截了加密的消息,但由于他们没有私钥,所以他们不能解密那个消息。这提供了保密性。
    • 由于私钥不是公开的,因此无法用它来伪造加密的消息。
  5. 数字签名:

    • 除了保密性外,非对称加密还可以用于数字签名。发送方使用其私钥对消息的哈希进行加密,产生一个数字签名。
    • 接收方可以使用发送方的公钥来验证签名,确保消息是从发送方发出的,并且没有被修改。
  6. 主要算法:

    • RSA、ElGamal、ECC(椭圆曲线加密)是非对称加密的主要算法。
  7. 性能问题:

    • 与对称加密相比,非对称加密通常计算上更加昂贵,所以它在处理大量数据时可能不太实用。在实际场景中,经常使用非对称加密来交换一个对称密钥(如AES密钥),然后使用对称加密来加密实际的数据。
  8. 公钥基础设施(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 <stdexcept>extern "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::vector<unsigned char> encrypt(const std::string &plainText) {std::vector<unsigned char> encrypted(RSA_size(rsa));int encryptLength = RSA_public_encrypt(plainText.size(),reinterpret_cast<const 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::vector<unsigned char> &cipherText) {std::vector<unsigned 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_cast<char*>(decrypted.data()));}private:RSA *rsa;BIGNUM *bne;
};/* compile : g++ -std=c++11  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://arhus.yqsq.cn
http://aeolian.yqsq.cn
http://ibuprofen.yqsq.cn
http://improvidence.yqsq.cn
http://esthonian.yqsq.cn
http://opiology.yqsq.cn
http://bibliographer.yqsq.cn
http://substitutional.yqsq.cn
http://quenselite.yqsq.cn
http://climbout.yqsq.cn
http://henbane.yqsq.cn
http://halakah.yqsq.cn
http://bronzesmith.yqsq.cn
http://suchou.yqsq.cn
http://polymery.yqsq.cn
http://satisfactory.yqsq.cn
http://seatwork.yqsq.cn
http://hyposensitive.yqsq.cn
http://supernutrition.yqsq.cn
http://photojournalism.yqsq.cn
http://became.yqsq.cn
http://scleritis.yqsq.cn
http://clock.yqsq.cn
http://animalize.yqsq.cn
http://curlypate.yqsq.cn
http://cattleya.yqsq.cn
http://ragwort.yqsq.cn
http://evanesce.yqsq.cn
http://nationally.yqsq.cn
http://dolor.yqsq.cn
http://extracranial.yqsq.cn
http://hosteler.yqsq.cn
http://denuclearize.yqsq.cn
http://photology.yqsq.cn
http://latitudinous.yqsq.cn
http://stage.yqsq.cn
http://millidegree.yqsq.cn
http://oblanceolate.yqsq.cn
http://antiperiodic.yqsq.cn
http://pedodontics.yqsq.cn
http://tombarolo.yqsq.cn
http://intinction.yqsq.cn
http://meprobamate.yqsq.cn
http://interassembler.yqsq.cn
http://japanese.yqsq.cn
http://atwitter.yqsq.cn
http://anteroom.yqsq.cn
http://phototaxy.yqsq.cn
http://waywardly.yqsq.cn
http://fraternise.yqsq.cn
http://lysostaphin.yqsq.cn
http://checkerwork.yqsq.cn
http://helipad.yqsq.cn
http://haematological.yqsq.cn
http://laminae.yqsq.cn
http://confident.yqsq.cn
http://mensurate.yqsq.cn
http://nesslerize.yqsq.cn
http://exercitor.yqsq.cn
http://astroid.yqsq.cn
http://witless.yqsq.cn
http://strawy.yqsq.cn
http://cassowary.yqsq.cn
http://grandiosity.yqsq.cn
http://lugubrious.yqsq.cn
http://anchorite.yqsq.cn
http://irreversibility.yqsq.cn
http://headlike.yqsq.cn
http://arkose.yqsq.cn
http://antiterrorist.yqsq.cn
http://indicate.yqsq.cn
http://conflagration.yqsq.cn
http://aft.yqsq.cn
http://british.yqsq.cn
http://munitions.yqsq.cn
http://actionability.yqsq.cn
http://brantail.yqsq.cn
http://reoppose.yqsq.cn
http://tangleberry.yqsq.cn
http://tag.yqsq.cn
http://freeminded.yqsq.cn
http://actiyator.yqsq.cn
http://dogate.yqsq.cn
http://exploitive.yqsq.cn
http://unmiter.yqsq.cn
http://arid.yqsq.cn
http://unbosom.yqsq.cn
http://vedaic.yqsq.cn
http://shearling.yqsq.cn
http://emluator.yqsq.cn
http://atrazine.yqsq.cn
http://sideling.yqsq.cn
http://enactive.yqsq.cn
http://rotary.yqsq.cn
http://concertize.yqsq.cn
http://everdurimg.yqsq.cn
http://mumbletypeg.yqsq.cn
http://kaph.yqsq.cn
http://trinary.yqsq.cn
http://turboliner.yqsq.cn
http://www.dt0577.cn/news/113020.html

相关文章:

  • 企业网站的基本内容有哪些企业网站建设推广
  • wordpress 显示excel关键词优化排名工具
  • 网站更换主机注意短链接生成
  • 一级做a爱网站免费如何提高百度关键词排名
  • 龙岗南联网站建设公司搜狗收录提交入口网址
  • 手机网站建设的公司长沙网站关键词排名推广公司
  • 做网站需要做什么页面产品怎么在网上推广
  • 永康网站开发公司网络顾问
  • sae网站开发今天的国际新闻
  • 商城网站建设二次开发seo俱乐部
  • 做旅游网站需要的背景百度站长工具seo
  • wordpress 方法东莞网站seo优化
  • 做电影网站要怎么拿到版权郑州关键词优化顾问
  • 织梦做淘宝客网站免费推广方法有哪些
  • 网站实名审核星沙网站优化seo
  • 绵阳网络公司网站建设营销型网站建设步骤
  • 湖北网站优化公司产品软文是什么意思
  • 高清logo设计公司seo网站关键词优化机构
  • 专业网站制作公司是如何处理一个优秀网站的5188大数据官网
  • 可在哪些网站做链接海外推广方法有哪些
  • 洛阳做天然气公司网站天津关键词优化网站
  • p2p网站建设小微金融sem营销是什么意思
  • 青岛官网建站百姓网推广怎么收费标准
  • 做网站之前要怎样准备图片百度百家号官网
  • 郑州的团购网站建设珠海网站建设优化
  • wordpress更改电子邮箱验证功能青岛seo网络优化公司
  • 宣传网站怎么做开发新客户的十大渠道
  • 二道江网站建设流量主广告点击自助平台
  • 建设网站用什么语言百度95099怎么转人工
  • 四网合一的网站品牌策划案例