將我的加密庫從Mcrypt 升級到OpenSSL
問題:
是否可以將我的加密庫從Mcrypt 升級到OpenSSL並保留解密使用以下方法加密的資料的能力Mcrypt?
衝突資訊:
網路上似乎存在著關於這兩個函式庫之間相容性的衝突資訊。
其他上下文:
我正在嘗試將當前使用Mcrypt 的加密類轉換為使用OpenSSL的加密類。但是,我在解密使用 Mcrypt 版本加密的資料時遇到了困難。
解密工作代碼:
以下OpenSSL 版本中解密程式的修訂程式碼已確認有效:
public function decrypt($data, $key) { $salt = substr($data, 0, 128); $enc = substr($data, 128, -64); $mac = substr($data, -64); list ($cipherKey, $macKey, $iv) = $this->getKeys($salt, $key); if ($mac !== hash_hmac('sha512', $enc, $macKey, true)) { return false; } $dec = openssl_decrypt($enc, $this->cipher, $cipherKey, OPENSSL_RAW_DATA, $iv); return $dec; }
測試結果:
使用各種資料和金鑰測試此修改後的程式碼沒有失敗。
結論:
可以升級加密庫從 Mcrypt 到 OpenSSL,並成功解密使用先前的庫加密的數據,前提是您使用更新的解密程式。
以上是我可以在保持解密相容性的同時從 Mcrypt 遷移到 OpenSSL 加密嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!