PHP Mysqli mcrypt_get_iv_size устарел, как использовать новую функцию?

avatar
Antoine Dionne
1 июля 2021 в 19:25
33
0
0

Я использовал функцию mcrypt_get_iv_size на своем веб-сайте, и теперь мне кажется, что она устарела

function Encrypt($word){
    $key = '.......';
    $iv = mcrypt_create_iv(
        mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
        MCRYPT_DEV_URANDOM
    );

    $encrypted = base64_encode(
        $iv .
        mcrypt_encrypt(
            MCRYPT_RIJNDAEL_128,
            hash('sha256', $key, true),
            $word,
            MCRYPT_MODE_CBC,
            $iv
        )
    );
    return $encrypted;
}

function Decrypt($word){
    $key = '.......';
    $data = base64_decode($word);
    $iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

    $decrypted = rtrim(
        mcrypt_decrypt(
            MCRYPT_RIJNDAEL_128,
            hash('sha256', $key, true),
            substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
            MCRYPT_MODE_CBC,
            $iv
        ),
        "\0"
    );
    return $decrypted;
}

Теперь я нашел новую функцию от coderhelper, вот она

function Encrypt($word) {
    $key = '.......';
  $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
  $encrypted = openssl_encrypt($word, 'aes-256-cbc', $key, 0, $iv);
  return base64_encode($encrypted . '::' . $iv);
}
function Decrypt($word) {
    $key = '.......';
    list($encrypted_data, $iv) = explode('::', base64_decode($word), 2);
    return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
}

Мой вопрос: Должен ли я использовать мою ранее работающую функцию расшифровки, чтобы экспортировать все мои зашифрованные слова из моей базы данных, а затем зашифровать их с помощью новой функции, а затем импортировать/обновить их в мою базу данных? Или есть способ расшифровать мои слова только из новой функции? Спасибо!

Источник
RiggsFolly
1 июля 2021 в 19:27
0

Найдите open_ssl в руководстве по PHP.

Dharman
1 июля 2021 в 21:37
0

coderhelper.com/questions/41272257/…

Michael Fehr
2 июля 2021 в 07:58
0

Я бы попытался расшифровать зашифрованный с помощью «mcrypt» зашифрованный текст с помощью новой функции «openssl» — если она работает, вы можете просто использовать «new/openssl» без проблем с расшифровкой и шифрованием всех данных. MCRYPT_RIJNDAEL_128 можно легко перенести на openssl.

Ответы (0)