中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站建設哪里好產(chǎn)品推廣找哪家公司

網(wǎng)站建設哪里好,產(chǎn)品推廣找哪家公司,有哪些做批發(fā)的網(wǎng)站有哪些手續(xù),今晚正式封城文章目錄 一、openssl對稱加密和非對稱加密算法對比1. 加密原理2. 常用算法3. 加密速度4. 安全性5. 應用場景6. 優(yōu)缺點對比綜合分析 二、代碼實戰(zhàn)代碼說明:運行輸出示例代碼說明:注意事項 一、openssl對稱加密和非對稱加密算法對比 OpenSSL 是一個廣泛使…

文章目錄

  • 一、openssl對稱加密和非對稱加密算法對比
      • 1. 加密原理
      • 2. 常用算法
      • 3. 加密速度
      • 4. 安全性
      • 5. 應用場景
      • 6. 優(yōu)缺點對比
      • 綜合分析
  • 二、代碼實戰(zhàn)
      • 代碼說明:
      • 運行輸出示例
      • 代碼說明:
      • 注意事項


一、openssl對稱加密和非對稱加密算法對比

OpenSSL 是一個廣泛使用的加密庫,提供了豐富的對稱加密和非對稱加密算法。這兩類加密方式各有不同的特點和適用場景。以下是兩者的對比:

1. 加密原理

  • 對稱加密

    • 使用相同的密鑰進行加密和解密。
    • 密鑰在加密和解密雙方之間共享,因此需要一個安全的密鑰傳輸方式。
    • 加密速度較快,適合加密大量數(shù)據(jù)。
  • 非對稱加密

    • 使用一對密鑰:公鑰和私鑰。公鑰用于加密,私鑰用于解密。
    • 公鑰可以公開,私鑰則需要保護,只有擁有私鑰的人才能解密公鑰加密的數(shù)據(jù)。
    • 適合小數(shù)據(jù)量加密和簽名,但處理大數(shù)據(jù)效率較低。

2. 常用算法

  • 對稱加密算法(在 OpenSSL 中支持的常見算法):

    • AES(高級加密標準):流行且安全的對稱加密算法,支持 128、192 和 256 位密鑰長度。
    • SM4:主要用于中國的商用密碼標準,采用 128 位密鑰。
    • DES 和 3DES(數(shù)據(jù)加密標準及三重數(shù)據(jù)加密標準):早期的加密算法,但已不再安全,較少使用。
  • 非對稱加密算法(在 OpenSSL 中支持的常見算法):

    • RSA:廣泛使用的非對稱算法,密鑰長度通常為 2048 或 4096 位。
    • ECC(橢圓曲線加密):基于橢圓曲線的加密,密鑰較短但安全性高,用于資源受限的環(huán)境。
    • DSA(數(shù)字簽名算法):主要用于簽名,常見于數(shù)字證書。

3. 加密速度

  • 對稱加密

    • 對稱加密算法如 AES 在處理速度上顯著優(yōu)于非對稱加密,非常適合大文件或大量數(shù)據(jù)的加密。
    • 常用于文件加密、數(shù)據(jù)存儲、網(wǎng)絡數(shù)據(jù)傳輸加密等場景。
  • 非對稱加密

    • 非對稱加密算法處理速度慢,因為其運算更為復雜,適合小數(shù)據(jù)量的加密,如數(shù)字簽名和密鑰交換。
    • 在實際應用中,通常將其與對稱加密結合使用,通過非對稱加密傳輸對稱密鑰來實現(xiàn)安全的密鑰交換,后續(xù)的數(shù)據(jù)傳輸則使用對稱加密。

4. 安全性

  • 對稱加密

    • 安全性依賴于密鑰長度和算法設計;例如,AES-256 被認為是非常安全的對稱加密算法。
    • 密鑰必須在傳輸中保持安全,一旦密鑰泄露,數(shù)據(jù)的機密性將受到威脅。
  • 非對稱加密

    • 安全性依賴于密鑰長度和密鑰保護。比如 RSA-2048 被認為是安全的,而 ECC 則以較短密鑰提供更高安全性。
    • 私鑰的安全性至關重要,如果私鑰泄露,任何持有公鑰的人都可以解密數(shù)據(jù)。

5. 應用場景

  • 對稱加密的應用場景

    • 用于 HTTPS 中的數(shù)據(jù)加密(結合非對稱加密交換密鑰后)。
    • 云存儲、數(shù)據(jù)庫等大文件的加密保護。
    • VPN、WiFi 等網(wǎng)絡傳輸中對數(shù)據(jù)的加密。
  • 非對稱加密的應用場景

    • 數(shù)字簽名,用于認證數(shù)據(jù)的來源和完整性。
    • SSL/TLS 協(xié)議中,用于加密對稱加密密鑰并驗證通信雙方身份。
    • 數(shù)據(jù)加密用于保護敏感信息的小文件,例如加密密碼、密鑰或數(shù)字證書。

6. 優(yōu)缺點對比

對比項目對稱加密非對稱加密
密鑰數(shù)量1 個密鑰,共享密鑰1 對密鑰(公鑰和私鑰)
加密速度快,適合大數(shù)據(jù)慢,適合小數(shù)據(jù)
安全性密鑰泄露會導致數(shù)據(jù)泄密公鑰泄露不會影響數(shù)據(jù)的私密性
密鑰分配需要安全的密鑰傳輸私鑰無需傳輸,安全性更高
典型應用大數(shù)據(jù)文件的加密、VPN、存儲加密SSL/TLS、數(shù)字簽名、密鑰交換

綜合分析

OpenSSL 中通常結合對稱加密和非對稱加密,以實現(xiàn)性能與安全性兼?zhèn)涞募用芊桨?。例?#xff0c;在 SSL/TLS 協(xié)議中,服務器會先使用非對稱加密交換密鑰,然后使用對稱加密傳輸數(shù)據(jù)。

二、代碼實戰(zhàn)

下面是使用 OpenSSL 實現(xiàn)對稱加密的示例代碼,采用 AES-256-CBC 算法對數(shù)據(jù)進行加密。此代碼會生成一個隨機的初始向量(IV),并且使用固定的密鑰對數(shù)據(jù)加密。

#include <openssl/evp.h>
#include <openssl/rand.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#define AES_KEY_LENGTH 32  // AES-256, so 256 bits = 32 bytes
#define AES_BLOCK_SIZE 16void handleErrors() {ERR_print_errors_fp(stderr);abort();
}// 對稱加密函數(shù)
int aes_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,unsigned char *iv, unsigned char *ciphertext) {EVP_CIPHER_CTX *ctx;int len;int ciphertext_len;// 創(chuàng)建并初始化上下文if (!(ctx = EVP_CIPHER_CTX_new())) handleErrors();// 初始化加密操作,指定 AES-256-CBC 算法if (1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) handleErrors();// 加密數(shù)據(jù)if (1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len))handleErrors();ciphertext_len = len;// 完成加密if (1 != EVP_EncryptFinal_ex(ctx, ciphertext + len, &len)) handleErrors();ciphertext_len += len;// 釋放上下文EVP_CIPHER_CTX_free(ctx);return ciphertext_len;
}int main() {// 32 字節(jié)的密鑰 (256 位)unsigned char key[AES_KEY_LENGTH] = "0123456789abcdef0123456789abcdef";// 生成 16 字節(jié)的初始向量 (128 位)unsigned char iv[AES_BLOCK_SIZE];if (!RAND_bytes(iv, AES_BLOCK_SIZE)) {fprintf(stderr, "隨機生成初始向量失敗\n");return 1;}unsigned char plaintext[] = "This is the data to encrypt";  // 要加密的數(shù)據(jù)unsigned char ciphertext[128];  // 存儲密文的緩沖區(qū)// 執(zhí)行加密操作int ciphertext_len = aes_encrypt(plaintext, strlen((char *)plaintext), key, iv, ciphertext);// 打印初始向量printf("Initial Vector (IV): ");for (int i = 0; i < AES_BLOCK_SIZE; i++) {printf("%02x ", iv[i]);}printf("\n");// 打印加密后的數(shù)據(jù)(密文)printf("Ciphertext (hex): ");for (int i = 0; i < ciphertext_len; i++) {printf("%02x ", ciphertext[i]);}printf("\n");return 0;
}

代碼說明:

  • 初始化加密上下文:使用 EVP_CIPHER_CTX_new() 創(chuàng)建加密上下文。
  • 設置加密算法和密鑰:通過 EVP_EncryptInit_ex() 指定 AES-256-CBC 算法。
  • 加密數(shù)據(jù)EVP_EncryptUpdate() 用于加密數(shù)據(jù)塊。
  • 完成加密EVP_EncryptFinal_ex() 處理最后的數(shù)據(jù)塊。
  • 生成隨機初始向量(IV)RAND_bytes() 生成隨機 IV,確保加密的安全性。

運行輸出示例

Initial Vector (IV): 1a 2b 3c 4d ... (隨機生成)
Ciphertext (hex): ae f5 67 89 ... (加密后的密文)

注意:密鑰和初始向量(IV)應安全存儲,并且應僅與需要解密的接收方共享。

這是對應解密代碼,解密前需要與加密代碼相同的密鑰和初始向量(IV),用相同的算法參數(shù)對密文進行解密:

#include <openssl/evp.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#define AES_KEY_LENGTH 32  // 256 位密鑰
#define AES_BLOCK_SIZE 16  // AES 塊大小 128 位(16 字節(jié))void handleErrors() {ERR_print_errors_fp(stderr);abort();
}// 對稱解密函數(shù)
int aes_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key,unsigned char *iv, unsigned char *plaintext) {EVP_CIPHER_CTX *ctx;int len;int plaintext_len;// 創(chuàng)建并初始化上下文if (!(ctx = EVP_CIPHER_CTX_new())) handleErrors();// 初始化解密操作,使用 AES-256-CBC 算法if (1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) handleErrors();// 提供待解密的數(shù)據(jù)if (1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len))handleErrors();plaintext_len = len;// 完成解密操作if (1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len)) handleErrors();plaintext_len += len;// 清理上下文EVP_CIPHER_CTX_free(ctx);return plaintext_len;
}int main() {// 密鑰和 IV 與加密時保持一致unsigned char key[AES_KEY_LENGTH] = "0123456789abcdef0123456789abcdef";unsigned char iv[AES_BLOCK_SIZE] = {0x1a, 0x2b, 0x3c, 0x4d, 0x5e, 0x6f, 0x7a, 0x8b,0x9c, 0xad, 0xbe, 0xcf, 0xde, 0xef, 0xfa, 0x1b};unsigned char ciphertext[] = {0xae, 0xf5, 0x67, 0x89, /* ... 加密數(shù)據(jù)的字節(jié)數(shù)組 */};unsigned char decryptedtext[128];  // 緩沖區(qū)用于存儲解密后的明文// 執(zhí)行解密操作int decryptedtext_len = aes_decrypt(ciphertext, sizeof(ciphertext), key, iv, decryptedtext);// 添加字符串終止符decryptedtext[decryptedtext_len] = '\0';// 輸出解密后的明文printf("Decrypted text: %s\n", decryptedtext);return 0;
}

代碼說明:

  • 初始化解密上下文:使用 EVP_CIPHER_CTX_new() 創(chuàng)建解密上下文。
  • 設置解密算法和密鑰:通過 EVP_DecryptInit_ex() 指定 AES-256-CBC 算法。
  • 解密數(shù)據(jù)EVP_DecryptUpdate() 用于處理密文的主要部分。
  • 完成解密EVP_DecryptFinal_ex() 處理最后的數(shù)據(jù)塊,并將明文長度加到總長度中。
  • 輸出解密結果:解密后的數(shù)據(jù)存儲在 decryptedtext 中,作為原始的明文數(shù)據(jù)輸出。

注意事項

  • 密鑰和初始向量(IV)必須與加密時一致。
  • 輸出的解密文本會和加密前的原始文本一致。
http://www.risenshineclean.com/news/5266.html

相關文章:

  • 關于加強網(wǎng)站建設的意見網(wǎng)站后臺管理系統(tǒng)
  • github 搭建網(wǎng)站怎樣打小廣告最有效
  • 邳州徐州網(wǎng)站開發(fā)軟文標題
  • 網(wǎng)站建設資金的請示個人網(wǎng)頁制作教程
  • 網(wǎng)站備案 哪個省最松發(fā)外鏈的平臺有哪些
  • 新東陽建設集團網(wǎng)站電商詳情頁模板免費下載
  • 做教育的有哪些網(wǎng)站seo推廣優(yōu)化排名軟件
  • 上海網(wǎng)站建設免企業(yè)seo排名
  • 郵箱163企業(yè)郵箱女生seo專員很難嗎為什么
  • 寵物網(wǎng)站制作費用明細今日廣州新聞最新消息
  • 網(wǎng)站開發(fā)需要什么東西百度seo排名優(yōu)化費用
  • wordpress 地理定位網(wǎng)絡優(yōu)化的內容包括哪些
  • 蚌埠網(wǎng)站制作哪家好推廣資源網(wǎng)
  • 菏澤網(wǎng)站建設哪家好關于搜索引擎的搜索技巧
  • 動態(tài)網(wǎng)站開發(fā)商城網(wǎng)站seo百度網(wǎng)站排名軟件
  • 做電影網(wǎng)站教程網(wǎng)站建設網(wǎng)站設計
  • 做網(wǎng)站什么科目石家莊seo公司
  • 提供做網(wǎng)站費用重慶百度seo整站優(yōu)化
  • 黃巖區(qū)住房保障建設局網(wǎng)站網(wǎng)絡推廣長沙網(wǎng)絡推廣
  • 商貿公司寮步網(wǎng)站建設價錢做網(wǎng)站哪家公司比較好而且不貴
  • 百色做網(wǎng)站站長工具國色天香
  • wordpress常用頁面百度seo服務公司
  • 什么用來編寫網(wǎng)頁鄭州seo優(yōu)化
  • 營銷型網(wǎng)站建設風格設定全球搜索網(wǎng)站排名
  • 一個網(wǎng)站可以做多少關鍵字網(wǎng)上推廣產(chǎn)品怎么做
  • 電商網(wǎng)站開發(fā)技術與維護互聯(lián)網(wǎng)營銷策劃案
  • 濮陽做網(wǎng)站的電話某網(wǎng)站seo策劃方案
  • 資陽視頻網(wǎng)站建設阿里巴巴關鍵詞排名優(yōu)化
  • 找券網(wǎng)站怎么做友情鏈接模板
  • 建站平臺 discuzseo推廣代運營