簡體   English   中英

在 php 7.2 中解密數據,在 php 5.6 中使用 AES 加密

[英]Decrypt data in php 7.2, which is Encrypted in php 5.6 using AES

我使用以下方法在 php 應用程序和 android 應用程序之間加密和解密數據,它在 php 5.6 中運行良好,升級到 php 7.2 后停止工作,現在我暫時移回 php 5.6。 我知道 php mcrypt 已貶值。 現在我的問題是我無法更新 Android 應用程序,我必須在服務器端以某種方式解決這個問題,我有預定義的密鑰iv ,在服務器端和應用程序中,我該怎么做才能使用相同的密鑰和 iv 並在 php 7.2 中加密和解密服務器端的數據。 提前致謝

 class MCrypt
        {
                private $key = 'Some Key'; 
                private $iv = 'Some IV'; 


                function __construct()
                {
                }

                function encrypt($str) {

                  //$key = $this->hex2bin($key);    
                  $iv = $this->iv;

                  $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

                  mcrypt_generic_init($td, $this->key, $iv);
                  $encrypted = mcrypt_generic($td, $str);

                  mcrypt_generic_deinit($td);
                  mcrypt_module_close($td);

                  return bin2hex($encrypted);
                }

                function decrypt($code) {
                  //$key = $this->hex2bin($key);
                  $code = $this->hex2bin($code);
                  $iv = $this->iv;

                  $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

                  mcrypt_generic_init($td, $this->key, $iv);
                  $decrypted = mdecrypt_generic($td, $code);

                  mcrypt_generic_deinit($td);
                  mcrypt_module_close($td);

                  return utf8_encode(trim($decrypted));
                }

                protected function hex2bin($hexdata) {
                  $bindata = '';

                  for ($i = 0; $i < strlen($hexdata); $i += 2) {
                        $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
                  }

                  return $bindata;
                }

        }

您需要分析存儲此類加密數據的影響表列表。

現在創建一個類似於 select * from the table 的程序並解密這些數據並使用更新查詢更新它。

在 PHP 5.6 版本中運行此程序,現在嘗試使用 OpenSSL 修改加密邏輯並重新更新表。

沒有像函數或類方法那樣實現從 5.6 到 7.2 的轉換的簡單方法。

mcrypt 在 7.2 中已棄用,默認情況下不包含在內。 但是,如果您願意,您仍然可以手動安裝 mcrypt。 您也可以使用 openssl_encrypt() 和 openssl_decrypt() 代替。

暫無
暫無

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

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