Palych_tw
@Palych_tw
Типа веб-разработчик

Как правильно зашифровать текст в openssl?

Всем привет.
Мне нужно зашифровать строку на php и расшифровать в python обычным AES-256-ECB.

вот код:
function create_hash($var1, $var2, $var3) {

    $key = 'hVyzdDQmDqanzkUDowPtere17cvNN3Lm';
    $input_string = $var1 . ' ' . $var2 . ' ' . $var3;

    $hash = openssl_encrypt($input_string, 'AES-256-ECB', $key);

    //make hash url safety
    $hash = strtr( $hash, '+/', '-_' );

    return $hash;
}


Но при расшифровке на пайтоне часто в строку добавляются лишние символы:
5b88ccbd37e6f376579821.png

если добавить в опции к openssl_encrypt OPENSSL_ZERO_PADDIN, то лишние символы пропадают, но появляется другая проблема. Теперь можно при шифровании получить ошибку
error:0607F08A:digital envelope routines:EVP_EncryptFinal_ex:data not multiple of block length


Насколько я понял, что бы не было проблем, шифруемая строка должна быть кратной длины? 8? 16? Как добить до кратности, дополнить пробелами?
  • Вопрос задан
  • 414 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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