openssl_encrypt работает также для расшифровки

Я сделал ошибку в написании кода openssl_encrypt расшифровать мои пароли, и это работает. Так может глупый вопрос, но это та же функция?

Вот тестовый код:

$algo  = 'AES-256-CTR';
$key = "1P4s5W0rd_or_4nyTh1ng_3L53";
$ivlen=openssl_cipher_iv_length($algo);
$iv = openssl_random_pseudo_bytes($ivlen);

$data="test";
$b64data=base64_encode($data);
$encdata = openssl_encrypt($b64data,$algo,$key,OPENSSL_RAW_DATA,$iv);

$b64decdata = openssl_encrypt($encdata,$algo,$key,OPENSSL_RAW_DATA,$iv);
$decdata=base64_decode($b64decdata);

print "<br>data: $data";
print "<br>encdata: $encdata";
print "<br>decdata: $decdata";
print "<br>";
print "<br>key: $key";
print "<br>iv: $iv";

Какая печать:

data: test
encdata: ��v�>u
decdata: test

key: 1P4s5W0rd_or_4nyTh1ng_3L53
iv: �|t,ԏ�&6�����

Так в чём моя ошибка? Где гремлин?

0

Решение

Шифрование и дешифрование в режиме CTR одинаковы, алгоритм генерирует поток данных на основе ключа и счетчика (iv), которые XOR’-данные. При наличии одного и того же ключа и счетчика генерируется один и тот же поток данных, поэтому шифрование и дешифрование — это одна и та же операция.

Увидеть Режим CTR для деталей, обратите внимание на диаграмме, что шифрование используется как для шифрования, так и для дешифрования.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector