Какую хеш-функцию использует OpenSSL для генерации ключа для AES-256? Я не могу найти это нигде в их документации.
$ touch file $ openssl aes-256-cbc -nosalt -P -in file enter aes-256-cbc encryption password: (I type "a" and hit enter) Verifying - enter aes-256-cbc encryption password: (I type "a" and hit enter) key=0CC175B9C0F1B6A831C399E269772661CEC520EA51EA0A47E87295FA3245A605 iv =4FA92C5873672E20FB163A0BCB2BB4A4
Какой алгоритм хеширования генерирует несоленый хеш после key=второй последней строки для ввода «а»?
Fairly sure it's an SHA1 digest algorithm but in all honesty I can't say with 100% certainty.
And who would have thought that something designed to increase obtuseness would have obtuse instructions ;)
EDIT: This may not be helpful in your circumstances but I guess you could always know by doing
openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p
Я определил, что он использует MD5 по умолчанию, так как когда я использую вашу команду (sidenote: ни одна из этих опций не задокументирована на странице мага ...) с `md5` вместо` sha1`, я получаю те же результаты, что и я первоначально размещено. Вопрос в том, как получить 256 бит из MD5 (128-битный алгоритм хеширования)?
mk12 12 лет назад
0
Один из способов сделать это - объединить два разрозненных MD5 в двоичном виде, что дает истинный 256-битный ключ. Есть несколько других методов для этого. Вы можете проверить пакет php "md5_base64". Даже если вы не php парень, документы довольно информативны.
Snesticle 12 лет назад
0
Обратите внимание, что оба MD5 из 'key.128.tmp' и 'key.256.tmp', соединенные вместе, образуют тот же ключ, что и вывод исходной команды.
И если вы сделаете третью итерацию, вы получите IV. Этот случай удобен тем, что размеры ключа и данных = IV (256 и 128 бит) являются точными коэффициентами хеш-вывода; в общем случае вы объединяете выходные данные хэша и берете первые K битов для ключа и следующие D битов для IV.
dave_thompson_085 9 лет назад
0
обновление: по умолчанию используется md5, но по состоянию на 1.1.0 в 2016 году это sha256. Полная информация на https://crypto.stackexchange.com/questions/3298/is-there-a-standard-for-openssl-interoperable-aes-encryption
dave_thompson_085 6 лет назад
0
The article includes very simple source code that :
allows you to encrypt and decrypt files or strings using the OpenSSL AES-256-CBC cipher and SHA1 digest algorithms. It is interoperable with the openssl command line tool which makes it a good introduction to using OpenSSL for ciphers.
1
Fran
Я не знаю ответа, но вы, вероятно, могли бы найти его достаточно легко в исходном коде OpenSSL .
«Достаточно легко» - функция `main` (где работает функция запроса пароля) имеет длину ~ 500 строк и изобилует` goto`s.
mk12 12 лет назад
2
Вот это да. Я только что посмотрел на исходный код. Это практически не читается. Без комментариев. Однобуквенные имена переменных. Тьфу. Извините, я предложил это.
Fran 12 лет назад
5