Java Chiffrement AES avec du sel
Bien, il s'avère que je suce au Chiffrement/Déchiffrement. J'ai tout simplement pas l'obtenir.
Comment puis-je faire Java chiffrer String message1 = "hello world";
avec String salt = "mySalt";
à l'aide du cryptage AES? aussi comment décrypter une fois crypté?
Si vous avez le temps de fournir le plus de code de base, ça m'aiderait beaucoup.
Aussi 1 question générale sur le chiffrement AES, en utilisant le même sel, le même message est toujours le même cryptage?
Merci d'avance.
double possible de Java 256 bits AES
Quelque chose me dit que vous ne devriez probablement pas essayer de déployer un important logiciel jusqu'à ce que vous êtes beaucoup plus à l'aise avec la cryptographie. AES est juste un algorithme de chiffrement, vous devez toujours choisir un et , et certains vecteur d'initialisation schéma. Les sels de ne pas vraiment avoir rien à faire avec le chiffrement (plutôt avec de hachage).
Thilo, j'ai vu que l'article, malheureusement je ne pouvais pas comprendre quoi que ce soit :S Kerrek SB, je sais, je suis en train de faire pour mes propres connaissances, de l'expérience.
Quelque chose me dit que vous ne devriez probablement pas essayer de déployer un important logiciel jusqu'à ce que vous êtes beaucoup plus à l'aise avec la cryptographie. AES est juste un algorithme de chiffrement, vous devez toujours choisir un et , et certains vecteur d'initialisation schéma. Les sels de ne pas vraiment avoir rien à faire avec le chiffrement (plutôt avec de hachage).
Thilo, j'ai vu que l'article, malheureusement je ne pouvais pas comprendre quoi que ce soit :S Kerrek SB, je sais, je suis en train de faire pour mes propres connaissances, de l'expérience.
OriginalL'auteur cody | 2011-09-05
Vous devez vous connecter pour publier un commentaire.
AES n'ont pas de notion de sel. Il suffit de données, et une clé. Pour la même entrée, il se produira toujours le même résultat.
Comment vous combinez votre message avec votre sel est à vous. La concaténation de chaîne est probablement suffisant. Mais notez que les sels de ne pas vraiment faire beaucoup de sens pour quelque chose comme AES, parce que ce n'est pas un algorithme de hachage.
Oui, juste à point.
Attendez, maintenant, je suis très confus, alors comment pouvez-vous chiffrer une chaîne qui vous ne serez en mesure de décrypter avec un "mot de passe" ou "clé" ou quelque chose?
Comme je l'ai dit, AES prend et .
mais la clé, c'est de la graine de droit?
OriginalL'auteur Oliver Charlesworth
Toujours le sel de votre AES fichiers. La raison pour cela est que vous avez un répertoire de fichiers JPEG qui sont de chiffrement chiffrée avec le même mot de passe, mais n'ont pas de sel. Si quelqu'un les récupère ces fichiers, ils seront voir tous les fichiers commencent par la même octets (comme c'est le JPEG en-tête et la même phrase de passe sera toujours chiffrer les mêmes valeurs jusqu'à ce que les octets commencent à diverger, au moins avec un CBC), ils savent aussi que les premiers blocs du fichier ressemblera en clair. Même si ils ne savent pas ce type de fichiers qu'ils sont, ils peuvent probablement deviner le type de la longueur de la tête qui sont similaires et les divers formats de fichier.
Sachant cela, ils peuvent désosser votre mot de passe dans une manière semblable à l'arc-en-ciel tables de la force brute. Le salage de ne pas arrêter ce qui se passe, mais il sera vraiment difficile à casser que chaque fichier (après le sel) sera différent type de fichier d'identification est difficile, plus ils auraient de générer un arc-en-ciel de la table pour chaque sel ou le calcul des frais indirects de la création d'un Vecteur d'Initialisation pour le sel.
OpenSSL magasins le sel dans le fichier
par exemple, j'ai créé un fichier à l'aide de cette commande avec un mot de passe "mot de passe":
echo "randomprhase" | openssl aes-128-cbc -message.enc
Voici le convertir le fichier résultant:-
Et les mêmes données quand j'ai couru le chiffrement de nouveau:-
Les 4 premiers octets dire que le fichier est salé (6153 746c 6465 5f5f) et sera toujours le même.
Les 4 octets est le hasard de sel (7eaa c4fd 63d8 8c8 pour le premier fichier & route a876 direction 5394 53f1 bf1a pour le deuxième fichier)
OpenSSL va prendre ce sel et de construire le Vecteur d'Initialisation (IV), étant un hash MD5 du mot de passe + sel répétée 3 fois. Ce IV est ensuite utilisé pour crypter le fichier.
Remarque la charge utile de 8 octets dans chaque cas est différent.
Si nous avons couru la même commande alors que pas saler:
[james@web openssltest]$ echo "randomprhase" | openssl aes-128-cbc -nosalt -out nosalt.enc
[james@web openssltest]$ echo "randomprhase" | openssl aes-128-cbc -nosalt -out nosalt1.enc
Avis que lorsque je l'ai repris en utilisant le même mot de passe et spécifié de ne pas saler les charges sont identiques.
Dans une implémentation de Java, vous pouvez stocker votre sel séparément, mais la peine de dépenser votre temps à écrire quelque chose qui émule la OpenSSL mise en œuvre de sorte que vous n'avez pas besoin de compter sur votre propre code pour décrypter un fichier (surtout si vous perdez votre code à un certain moment dans l'avenir, le chiffrement peut contrecarrer vous comme beaucoup comme il peut déjouer les plans d'un attaquant).
OriginalL'auteur James879
Avec Ressort de Sécurité de la Cryptographie, il est simplifié (principalement parce que par défaut le mot de passe de cryptage basé plutôt que d'autres formes):
AES est juste un chiffre, et vous pouvez utiliser un IV avec le texte que vous chiffrez.
Avec un chiffrement symétrique, le sel est utilisé pour le/la touche secret que vous chiffrer avec, comme vous pouvez le voir ci-dessus.
Dans le monde réel, vous devrez composer avec des systèmes distribués, des clés partagées et les sels, à travers le cluster, etc, etc. Beaucoup de plaisir.
Printemps de Sécurité est une couche d'abstraction au sujet de la JCE, il est donc facile de s'adapter si vous n'utilisez pas le Printemps lui-même.
OriginalL'auteur JeeBee
Lorsque vous utilisez l'AES avec une concentration de sel, le sel de la valeur diffère du texte à chiffrer, mais la clé reste la même - dans ce cas, vous devez également stocker le sel de la valeur aussi bien..
Ici est un bon exemple...
Son juste de chiffrement/déchiffrement avec la normale AES - rien de nouveau, vous avez juste besoin d'ajouter un sel de valeur et assurez-vous de le stocker pour le décryptage.
OriginalL'auteur Prabath Siriwardena