OpenSSL асимметричное шифрование без соли (в PHP) - PullRequest
1 голос
/ 01 октября 2011

Мне нужно зашифровать строковые данные с помощью SSH-2 RSA 1024 бит (с открытым ключом), а затем с помощью алгоритма RMD-160. Я делаю это так:

создать закрытый ключ:

openssl genrsa -des3 -out privatekey.key 1024

открытый ключ:

openssl rsa -in privatekey.key -pubout -out public.pem

шифровать данные:

openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out encrypted_data.txt

Но запрос таков: нужно получать одинаковый вывод с одинаковым вводом! Например, если входной строкой является «некоторые данные», а зашифрованной строкой является «a23c40327a6c5a67a5bb332», то мне нужно получать вывод «a23c40327a6c5a67a5bb332» каждый раз, когда входные данные «некоторые данные»

Могу ли я сделать это с асимметричным шифрованием?

Я знаю, что это можно сделать с помощью симметричного шифрования, такого как DES, с опцией -nosalt

openssl des3 -nosalt -in file.txt -out file.des3

но возможно ли это с асимметричным шифрованием?

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Кэмерон Скиннер прав - вы должны использовать рандомизированное заполнение.

Тем не менее, если вы не хотите, вы можете использовать phpseclib, чистую реализацию PHP RSA , чтобы сделать это следующим образом:

$ciphertext = base64_decode('...');
$ciphertext = new Math_BigInteger($ciphertext, 256);
echo $rsa->_exponentiate($ciphertext)->toBytes();

Это хакерское решение, поскольку phpseclib изначально не позволяет вам выполнять шифрование RSA без рандомизированного заполнения, но оно выполняет свою работу.

1 голос
/ 01 октября 2011

Вероятно, нет.

Страница man для openssl показывает, что подкоманда rsautl принимает заполнение pkcs1 1.5, заполнение oaep, обратно совместимое заполнение SSL или отсутствие заполнения. Все они (кроме заполнения) генерируют случайные данные для заполнения сообщения, поэтому никакие два шифрования не сгенерируют один и тот же зашифрованный текст (это хорошо).

Если вы можете вручную дополнить свои данные до нужной длины, тогда вы можете не использовать заполнение, но имейте в виду, что это значительно ослабит вашу безопасность.

...