[英]I want to decrypt the text that in encrypted in php using openssl_encrypt
[英]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.