Comment générer Rijndael CLÉ et IV à l'aide d'une phrase de passe?
Comment générer Rijndael CLÉ et IV à l'aide d'une phrase de passe? La longueur de la clé doit être en 256 bits.
- Quelle langue utilisez-vous? La bibliothèque?
- Merci pour toutes les réponses. Mon upvote pour tous.
- Ne pas le faire; apprendre une IV fonctionne réellement. Voir ma réponse à la réponse choisie pour pourquoi est-ce un insondable idée.
- Est Alex Aza réponse suffisante? Ma conjecture est que la raison de cette question est que la ASP.Net Rijndael constructeur prévoit à la fois une clé et un IV.
- Nope. La prémisse fondamentale de la question est mal. Vous n'avez pas de générer une IV de la même source que la clé. Vous générez un unique IV avec pas de relation à la clé à chaque fois que vous chiffrer un message, puis de l'inclure IV avec ce message. Il est impossible à la fois de répondre à cette question et de fournir une solution de travail comme la question est basée sur de fausses prémisses.
- Dans le cas de C#, vous pouvez appeler la GenerateIV() la méthode pour se faire une bonne IV. Ensuite, une fois que vous avez chiffré le texte en clair, ajouter le IV alors que les 16 premiers octets du texte chiffré. Lorsque vous déchiffrer le texte chiffré, arrachez les 16 premiers octets et les utiliser comme le IV lors du déchiffrement.
- Remarque: ce qui précède suppose Rijndael avec un bloc de 128 bits taille (standard AES) en mode CBC. C'est différent si vous modifiez l'un de ces facteurs.
Vous devez vous connecter pour publier un commentaire.
C'est plug and play code que j'ai trouvé sur internet. Il fonctionne, tout simplement:
Je pense que vous êtes à la recherche pour le mot de passe en fonction de dérivation de clé. Il est
Rfc2898DeriveBytes
de la classe qui l'implémente.Rfc2898DeriveBytes
prend un mot de passe, un sel, et un nombre d'itérations, et ensuite génère des clés par le biais d'appels à laGetBytes
méthode.RFC 2898 inclut des méthodes pour la création d'une clé et le vecteur d'initialisation (IV) à partir d'un mot de passe et le sel. Vous pouvez utiliser PBKDF2, un mot de passe fonction de dérivation de clé, pour retirer les clés à l'aide d'un pseudo-aléatoire de fonction qui permet de touches quasi-illimité de longueur pour être généré. Le Rfc2898DeriveBytes classe peut être utilisée pour produire une clé dérivée à partir d'une clé de base et d'autres paramètres. Dans un mot de passe fonction de dérivation de clé, la clé de base est un mot de passe et les autres paramètres sont le sel de la valeur et un nombre d'itérations.
Pour plus d'informations sur PBKDF2, voir la RFC 2898, "PKCS #5: Mot de passe-Cryptographie Basé sur la Spécification de la Version 2.0".
Exemple:
Vous pouvez utiliser
DeriveBytes
dans tout algorithme symétrique, non seulementRijndael
.Exemple:
Utilisation:
Assurez-vous de changer
salt
etiterations
paramètres.Le IV doit être aléatoire (n'a pas besoin d'être imprévisible, aléatoire, aléatoire assez qu'ils ne pourront pas être réutilisés).
À la génération de la clé à partir du mot de passe, vous êtes à la recherche d'un fonction de dérivation de clé pour qui, de nos jours il y a au moins trois bons choix (PBKDF2, bcrypt, scrypt), à l'aide d'un non itéré de hachage comme une affiche précédente suggère le plus souvent conduit à l'insécurité des systèmes.
Également utiliser AES ni Rijndael, ce n'est pas exactement la même chose. À l'aide d'un Rijndael combinaison ne fait pas partie de l'AES peut être une interopérabilité cauchemar plus tard, et la sécurité de ces fonctions de combinaison n'est pas bien étudié de toute façon.
IV doit être aléatoire (vous passez habituellement avec les données chiffrées), et la clé peut être obtenue dans un certain nombre de façons: il suffit d'ajouter le mot de passe à la longueur de la clé (si le mot de passe est inférieure à 32 caractères) ou (ce qui est plus fiable) dériver une clé en utilisant SHA2 algorithme de hachage ou d'utiliser un peu plus de manière sophistiquée.
Utiliser cette Rfc2898DeriveBytes Classe.
Mot de conseiller même si, de votre sécurité niveau a baissé limitée par la longueur de la phrase de passe/la force. Donc, ne pas le faire.