Le mot de passe pour la fonction clé est compatible avec les commandes OpenSSL?
Par exemple, la commande:
openssl enc -aes-256-cbc -a -in test.txt -k pinkrhino -nosalt -p -out openssl_output.txt
sorties quelque chose comme:
key = 33D890D33F91D52FC9B405A0DDA65336C3C4B557A3D79FE69AB674BE82C5C3D2
iv = 677C95C475C0E057B739750748608A49
Comment est-ce la clé générée? (Code C comme une réponse serait trop génial de demander 🙂 )
Aussi, quelle est la iv généré?
Ressemble à une sorte de hex pour moi.
source d'informationauteur Tudor | 2012-02-28
Vous devez vous connecter pour publier un commentaire.
OpenSSL utilise la fonction EVP_BytesToKey. Vous trouverez l'appel à elle dans
apps/enc.c
. Leenc
utilitaire permettant d'utiliser le MD5 par défaut dans l'Algorithme de Dérivation de Clé (KDF) si vous n'avez pas spécifier un autre digérer avec le-md
argument. Maintenant, il utilise l'algorithme SHA-256 par défaut. Voici un exemple de travail à l'aide de MD5:Exemple d'utilisation:
Qui génère la même clé que cette ligne de commande OpenSSL:
OpenSSL 1.1.0 c changé l'algorithme digest utilisé dans certains des composants internes. Autrefois, MD5 a été utilisé, et 1.1.0 passé à SHA256. Veillez à ce que le changement n'est pas vous affecter dans les deux
EVP_BytesToKey
et des commandes commeopenssl enc
.Si quelqu'un est à la recherche pour la mise en œuvre de la même dans SWIFT
J'ai converti le
EVP_BytesToKey
dans swift- Je utiliser CryptoSwift pour le hachage.
C'est une manière plus propre que les pommes ne recommande pas d'OpenSSL dans iOS
Mise à JOUR : Swift 3
Ici est une version pour mbedTLS /Polar SSL - testé et de travail.
Si quelqu'un passant par ici, est à la recherche d'un travail, performant implémentation de référence en Haskell, c'est ici:
Il utilise des algorithmes de hachage fournis par le cryptonite paquet. Les arguments sont la touche désirée et IV de la taille, en octets, de l'algorithme de hachage à utiliser (comme par exemple
(undefined :: MD5)
facultatif) sel et le mot de passe. Le résultat est un tuple de la clé et IV.