Quelle fonction de hachage OpenSSL utilise-t-il pour générer une clé pour AES-256? Je ne le trouve nulle part dans leur documentation.
$ 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
Quel algorithme de hachage génère le hachage non salé après key=
sur l'avant-dernière ligne, pour l'entrée "a"?
encryption
openssl
hashing
aes
mk12
la source
la source
md5
au lieu desha1
, j'obtiens les mêmes résultats que ceux que j'ai publiés à l'origine. La question est, comment obtient-il 256 bits de MD5 (un algorithme de hachage de 128 bits)?Il s'agit d'une concaténation de deux hachages MD5.
Il est dérivé comme ceci:
Vous pouvez vérifier cela en faisant:
Remarquez comment les MD5 de 'key.128.tmp' et 'key.256.tmp' concaténés ensemble forment la même clé que la sortie à la commande initiale.
la source
OpenSSL utilise AES avec SHA1.
Si vous souhaitez examiner une source mieux écrite qu'OpenSSL, consultez l'article
classe C ++ qui s'interface avec les chiffrements OpenSSL .
L'article comprend du code source très simple qui:
la source
Je ne connais pas la réponse, mais vous pourriez probablement la trouver assez facilement dans le code source d'OpenSSL .
la source
main
fonction (où réside la fonctionnalité de demande de mot de passe) est d'environ 500 lignes et jonchée degoto
s.