командная строка openssl для шифрования RC4, не ожидаемый результат, не понимаю - PullRequest
4 голосов
/ 02 декабря 2011

это, наверное, глупый вопрос, но я не могу понять это.В настоящее время я использую этот веб-сайт: http://www.fyneworks.com/encryption/rc4-encryption/ для шифрования RC4 для подтверждения концепции.Например, я ввожу 'a' в качестве открытого текста, 'a' в качестве пароля и получаю '71' в качестве зашифрованного текста (это представление ascii для 'q').Я хотел сделать то же самое из командной строки, используя openssl:

> echo a | openssl rc4 -nosalt  -out /tmp/uuu 
enter rc4 encryption password:
Verifying - enter rc4 encryption password:

> cat /tmp/uuu | xxd
0000000: 5896                                     X.

Итак, мы получаем «5896» вместо «71», и это то, что я не понимаю.Если бы кто-то мог объяснить мне, я был бы благодарен.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

Спасибо другу, мы выяснили, что случилось.Он сказал мне напечатать ключ

echo -ne "a" |  openssl  rc4 -pass pass:a -e  -nopad    -nosalt -p
key=0CC175B9C0F1B6A831C399E269772661

Мы видим, что добавлен некоторый отступ, с 0x61, который мы ввели в конце.Оказывается, openssl генерирует ключ из прохода.

Вместо этого, если мы введем непосредственно ключ с параметром -K:

echo -ne "a" |  openssl  rc4 -K 61 -e  -nopad    -nosalt -p
key=61000000000000000000000000000000

Мы видим, что есть дополнение с '0'.,На самом деле, он не хочет, чтобы мы использовали слишком маленький ключ (поскольку для rc4 ключ должен быть длиной не менее 40 бит).Теперь попробуем с ключом 128b:

echo -ne "foobar" |  openssl  rc4 -K "6162636465666768696A6B6C6D6E6F70" -e  -nopad    -nosalt  | xxd
0000000: caaf 2cbf d334                           ..,..4

Результат такой же, как на веб-странице :)

0 голосов
/ 02 декабря 2011

незавершенное производство

Вот интересная модель для вас.Используя «0» в качестве ключа шифрования, мы получаем сильные тенденции между открытым текстом и зашифрованным текстом.См. Ниже.

Меня интересует разница между двумя реализациями в том, что fyne увеличивается монотонно, в то время как OpenSSL - шаг вперед.Я еще раз посмотрю на это позже - я отмечаю это вики сообщества, так как я пока не считаю это ответом, но я подумал, что анализ может помочь.

OpenSSL:

0(0) = 72
0(1) = 73
0(2) = 70
0(3) = 71
0(4) = 76
0(5) = 77
0(6) = 74
0(7) = 75
0(8) = 7A
0(9) = 7B

Используемые команды

cat -n N > /tmp/test #Where n is a number
openssl rc4 -e -nosalt -in /tmp/test -out /tmp/uuu
cat /tmp/uuu |xxd
...