sanchezzzhak
@sanchezzzhak
Ля ля ля...

Как передать в base64 зашифрованную строку и раскодировать независимо от версии php?

Вот подходящий для меня способ https://3v4l.org/rRnD8
Из тестов на разных PHP/hhvm видно что base64 у каждой версии разный в виду особенности наверное mcrypt

Может кто знает еще способ передать закодированную строку в base64 + раскодировать по ключу

UPD
Спасибо всем :)

UPD2 на всякий пожарный чтобы не потерять
<?php


    $key = 'password to (en/de)crypt';
    $string = ' {login:"user_test", password:"12311231!"} '; // note the spaces
    
    
    $iv = mcrypt_create_iv(
        mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
        MCRYPT_DEV_URANDOM
    );
    var_dump($iv);
    $encrypted = base64_encode(
        $iv .
        mcrypt_encrypt(
            MCRYPT_RIJNDAEL_128,
            hash('sha256', $key, true),
            $string,
            MCRYPT_MODE_CBC,
            $iv
        )
    );
    

    $key = 'password to (en/de)crypt';
    $string = ' {login:"user_test", password:"12311231!"} '; // note the spaces
    
    //$encrypted = "t0izCc6wCMaoOFbTnjrUCaVzXtqzv0O2812Yv9DT7p19llSuu4eFV6ha4ukvFeYCYr31LAVHYo5BaUzuCBNkcA==";
    
    
    $data = base64_decode($encrypted);
    $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"
    );



    echo 'Encrypted:' . "\n"; 
    var_dump($encrypted);
    
    echo "\n";
    
    echo 'Decrypted:' . "\n";
    var_dump($decrypted);


Все оказалось как и должно было работать.
Вопрос только остался только для себя почему когда я тестил я упоролся*? хе.
  • Вопрос задан
  • 543 просмотра
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
Что-то не видно различий в разных PHP: https://3v4l.org/CoWfs

UPD: Ну так у вас же в коде рандомится $iv, вот и результат везде разный.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы