本教程演示瞭如何使用不對稱鍵和phpseclib庫加密大型消息。
>不對稱加密(例如RSA)通過採用公共密鑰加密和解密的私鑰來解決關鍵分配挑戰。 這允許安全的公共密鑰共享,因為只有專用密鑰持有人才能解密。
> RSA的限制是其限制的明文容量; 2048位密鑰通常處理最多256個字節。混合加密(結合對稱和不對稱方法)克服了這一點。 對稱鍵加密消息,然後將此對稱密鑰加密使用收件人的公鑰並附加。收件人使用其私鑰解密對稱鍵,然後使用它解密消息。 PHP安全通信庫(PHPSECLIB)是一個免費的開源庫,可提供各種加密算法的純PHP實現,包括RSA和對稱算法(DES,AES)。它即使沒有更快的加密擴展也可靠地支持混合加密和功能。
>簡介
在傳輸之前對敏感數據進行加密至關重要。加密使用鍵和算法將明文(正常數據)轉換為密文(秘密數據)。解密逆轉了此過程。>加密算法將數學操作應用於密鑰和宣傳值的數值,以產生密文。 較大的密鑰增強了安全性。
加密算法和鍵
存在兩種主要加密算法類型:
>對稱算法:
最佳解決方案結合了對稱和非對稱加密:
實現
>此示例使用PHP安全通信庫(PHPSECLIB)。 通過作曲家安裝它。 文檔位於<code class="language-php">$rsa = new Crypt_RSA(); $keys = $rsa->createKey(2048); file_put_contents('key.pri', $keys['privatekey']); file_put_contents('key.pub', $keys['publickey']);</code>解密函數
<code class="language-php">function encrypt_message($plaintext, $asym_key, $key_length = 150) { $rsa = new Crypt_RSA(); $rij = new Crypt_Rijndael(); $sym_key = crypt_random_string($key_length); $rij->setKey($sym_key); $ciphertext = $rij->encrypt($plaintext); $ciphertext = base64_encode($ciphertext); $rsa->loadKey($asym_key); $sym_key = $rsa->encrypt($sym_key); $sym_key = base64_encode($sym_key); $len = strlen($sym_key); $len = dechex($len); $len = str_pad($len, 3, '0', STR_PAD_LEFT); $message = $len . $sym_key . $ciphertext; return $message; }</code>結論
<code class="language-php">function decrypt_message($message, $asym_key) { $rsa = new Crypt_RSA(); $rij = new Crypt_Rijndael(); $len = substr($message, 0, 3); $len = hexdec($len); $sym_key = substr($message, 0, $len); $message = substr($message, 3); $ciphertext = substr($message, $len); $ciphertext = base64_decode($ciphertext); $rsa->loadKey($asym_key); $sym_key = base64_decode($sym_key); $sym_key = $rsa->decrypt($sym_key); $rij->setKey($sym_key); $plaintext = $rij->decrypt($ciphertext); return $plaintext; }</code>>
以上是如何使用不對稱密鑰和phpseclib加密大型消息的詳細內容。更多資訊請關注PHP中文網其他相關文章!