簡體   English   中英

用密鑰簡單地對php5中的utf-8字符串進行加密/解密

[英]Simple encrypt/decrypt of utf-8 strings in php5 with secret key

有人可以在主題“用秘鑰對php5中的utf-8字符串進行簡單加密/解密”上給我建議嗎? 關於獨立圖書館的一些建議? (不依賴於32/64位計算機)。

$encryptedTextUTF8 = simpleEncrypt($originalTextUTF8, $secret);
echo simpleDecrypt($encryptedTextUTF8, $secret); // outputs $originalTextUTF8

使用mcrypt擴展名: http : //us.php.net/manual/en/book.mcrypt.php類似以下內容的方法可能是可行的:

$pass      = 'password_string_to_be_encrypted';
$string    = 'password_string_to_be_decrypted';
$salt      = 'your_salt';
$pepper    = 'your_extra_salt';
$encrypted = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $salt . $pass . $pepper ), $string, MCRYPT_MODE_CBC, md5( md5( $salt . $pass . $pepper ))));
$decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5($salt . $pass . $pepper), base64_decode( $string ), MCRYPT_MODE_CBC, md5( md5( $salt . $pass . $pepper))), "\0");

編輯:事實證明是錯誤的,我建議刪除加密的md5部分。 至於什么更好,我還不知道,但是當我有足夠的時間進行調查時,我將嘗試更新我的帖子。 :)

PHP字符串不知道(也不關心)它們的字符編碼是什么。 它們只是字節的集合。 這使您完全不必擔心這里的UTF-8。

因為您要使用對稱密鑰加密,所以您可能需要使用mcrypt擴展名 它具有多種可用的密碼 ,包括AES(“ Rijndael”)。 Mcrypt本身並不關心它是在32位還是64位計算機上。

我將不提供示例代碼,因為使用加密需要一些非同尋常的知識,我不確定我是否可以單獨通過代碼向您解釋,並且復制粘貼加密代碼是個壞主意。

了解塊密碼操作模式是如何工作的,將幫助您選擇適合自己正在做的事情的模式。 如果您希望使用其他語言開發的程序可以處理加密的數據,則也需要這種理解,因為它們將使用不同的默認密碼模式和不同的填充方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM