加解密演算法

城裡的野山參發表於2021-06-01

這篇文章主要介紹加解密演算法,以及在PHP中如何使用

按大類劃分,加解密分為兩大類:對稱加密和非對稱加密。
簡單的區分就是,對稱加密,加解密用的是同一套祕鑰;非對稱加密則有公私兩個祕鑰,公鑰用來加密,私鑰用來解密。

對稱加密

對稱加密的常規演算法有:DES,3DES,AES等,支援一些模式,如 ECB,CBC,CTR等。

PHP中的 OpenSSL擴充套件提供了現成的函式openssl_encryptopenssl_decrypt針對對稱加密,支援多種加密演算法,包括國密 SM4,可通過openssl_get_cipher_methods檢視具體支援的演算法。

參考資料
PHP OpenSSL擴充套件 - 對稱加密
加密模式
對稱加密

非對稱加密

非對稱加密使用演算法RSA,區別在於不同的祕鑰長度,現階段推薦祕鑰長度為2048位或者更高。相關的原理可查部落格園或維基百科。

PHP中的使用範例

// 生成金鑰資源id,此函式主要用來校驗公私祕鑰是否能夠正常使用
$pi_key = openssl_pkey_get_private($private_key);
$pu_key = openssl_pkey_get_public($public_key);

// 私鑰加密,除了這樣使用之外,也可以直接原生的祕鑰內容,不進行提取
$encrypted = ‘’;
openssl_private_encrypt($data, $encrypted, $pi_key);

// 轉碼,這裡的$encrypted就是私鑰加密的字串
$encrypted = base64_encode($encrypted);

// 公鑰解密,$decrypted即為公鑰解密後私鑰加密前的明文
$decrypted = ‘’;
$encrypted = base64_decode($encrypted);
openssl_public_decrypt($encrypted, $decrypted, $pu_key);

參考資料
非對稱加密-維基百科
非對稱加密-CSDN

雜湊雜湊值

雜湊值計算是單向的,因為無法反向推導,一般用來進行各種校驗。比如使用者的登入祕鑰,資料傳輸的簽名。

演算法一般是MD5,SHA

實際的操作中一般會加“鹽”來增加破解的難度,無法通過簡單的撞庫來探測。

實戰

https的情況下,理論上來說,資料傳輸加上簽名就OK。不過實際使用中,在一些特別強調安全性的場合,在https的基礎上依然會加密加簽名。

資料查詢

這篇文章非常的粗略,屬於概括性的介紹,實際使用中的細節部分並沒有多少涉及,現網上有很多這樣細節性的內容。

維基百科和部落格園都是不錯的資訊查詢源。

查詢舉例

搜尋欄:加解密 site:cnblogs.com

本作品採用《CC 協議》,轉載必須註明作者和本文連結
城裡的野山參

相關文章