WolandV
@WolandV
Программист

Как получить одинаковые результаты шифрования mcrypt в php и в консоли?

Имеется стандартная реализация шифрования с помощью mcrypt в php (DES с модом ECB):

var_dump(base64_encode(mcrypt_encrypt('des', 'abcd1234', 12345, 'ecb')));

которая возвращает всегда одинаковый результат: string(12) "TkXoGeZK44Y="

Жизненно необходимо получить точно такой же результат при работе с mcrypt через командную строку. Покурив мануал, появилась некоторая уверенность, что аналог вышеописанного кода на php в консоли должен выглядеть следующим образом:

mcrypt -a des -m ecb -b -q -F -k 'abcd1234' | base64


Но получаемый результат не соответствует результату, который был получен выше. Получаю либо JWzYLaNSAOc= либо L0BJcpSopZU=, в зависимости от того, делаю ли перенос строки перед Ctrl+D.

Текущую реализацию на php модифицировать нельзя, поэтому исправлять нужно именно консольный вариант.

Буду крайне признателен, если укажете на ошибку в моих результатах!
  • Вопрос задан
  • 753 просмотра
Пригласить эксперта
Ответы на вопрос 2
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
> в зависимости от того, делаю ли перенос строки перед Ctrl+D.
Перенос строки - вполне себе символ, поэтому он попадает в данные, от которых считается хэш.
Пропустите через sed 's/^$//g' , например.
Ответ написан
karabanov
@karabanov
Системный администратор
Может решить задачу "в лоб":

$ php -r "echo base64_encode(mcrypt_encrypt('des', 'abcd1234', '12345', 'ecb'));"
TkXoGeZK44Y=
Ответ написан
Ваш ответ на вопрос

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

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