簡體   English   中英

php,openssl函數生成隨機編碼,如何正確將加密的文本保存在數據庫中

[英]php ,openssl function generate random encoding , how can i correctly save encrypted text in database

好的,我是一名具有加密基礎的開發人員,我有一個任務是對數據進行加密,然后將加密保存到數據庫中 ,我正在使用openssl php函數進行加密和解密,如下所示

function encrypte($stringToEncrypte){
 $method="AES-128-CBC";
    $iv=mcrypt_create_iv(16, MCRYPT_RAND);
    $pass=md5('8123jhewe8dnjsdnq');
    $encrypted=openssl_encrypt ($stringToEncrypte, $method, $pass, true , $iv);
return $encrypted."---".$iv;
}
   function decrypte($stringToDecrypte){
/*
decrypte by remove --- then get iv then get encrypted then decrypte
*/
}

它工作正常,但是加密的文本具有隨機編碼,這將導致許多錯誤,無法正確保存到我的數據庫中(保存為UTF-8 Encoding)

當然 ,我試圖通過mb_convert_encoding()函數將加密的密鑰轉換為utf-8 ,但從邏輯mb_convert_encoding() ,新的編碼文本將無法正確解密,因為新的編碼文本將與舊的編碼文本不同。

例如 ,加密的文本將具有ISO-8859-1類的隨機編碼,而我的數據庫編碼為utf-8,並且不會生成編碼轉換,因此文本可以再次解密。

我發現可能不是很糟糕,是使用URLencode PHP函數,我嘗試了它並且運行良好,但仍然需要專家解答

如果您的數據庫是utf8,則所有內容都應該是utf8。 加密之前,需要將$ stringToEncrypte轉換為utf8。 並確保您的$ pass和$ iv也是utf8。 然后,您可以加密(也可以是utf8),保存在數據庫中以及解密utf8中的所有內容。

暫無
暫無

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

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