CryptoLib(https://github.com/IcyApril/CryptoLib)支持使用不同加密密碼的級聯(分層)加密;它使用1個密鑰,但在每個加密級別進行PBKDF2散列(在Whirlpool和SHA512之間使用SOHA交替)。這將保護你的情況下,一個密碼被破壞,其餘仍站在它的位置,以調用它,你只需做到這一點(更換路徑/與你把CryptoLib):
<?php
require_once('path/to/cryptolib.php');
$encryptedString = CryptoLib::encryptData("Test string.", "password");
$decryptedString = CryptoLib::decryptData($encryptedString, 'password');
?>
要直接回答最初的問題,建立在此基礎之上:爲了使用CryptoLib的三個單獨的密鑰(以級聯的方式),您只需調用加密函數三次。
<?php
require_once('path/to/cryptolib.php');
$encryptedString = CryptoLib::encryptData("Test string.", "password1");
$encryptedString = CryptoLib::encryptData($encryptedString, "password2");
$encryptedString = CryptoLib::encryptData($encryptedString, "password3");
?>
而且對字符串進行解密,調用解密函數3次反向:
<?php
require_once('path/to/cryptolib.php');
$decryptedString = CryptoLib::decryptData($encryptedString, "password3");
$decryptedString = CryptoLib::decryptData($decryptedString, "password2");
$decryptedString = CryptoLib::decryptData($decryptedString, "password1");
?>
CryptoLib源是在GitHub上的:https://cryptolib.ju.je/和文檔網站https://cryptolib.ju.je。
我記得我的網絡安全課程,用幾個密鑰加密文件並不能加強它。如果你想要更高的保護,你最好使用帶有256位密鑰的aes – 2012-03-12 14:40:46
如果你想加強它,那麼只需使用你的密鑰作爲PBKDF2或bcrypt的輸入,有足夠的鹽和迭代次數。永遠不要直接使用密碼或字符串作爲密鑰。 – 2012-03-12 16:18:55
我相信這是問AES是否是一個組合下不同的密鑰。這在[crypto](http://crypto.stackexchange。com /) – 2012-03-12 22:30:10