Je recherche un algorithme de cryptage à clé symétrique sécurisé compatible avec JavaScript et Java. P>
J'ai essayé de la mettre en œuvre, mais j'ai eu des problèmes de codage. P>
4 Réponses :
Il existe une excellente implémentation DES (et par extension 3DES) dans JS, que j'utilise assez souvent. Je vais mettre le lien lundi, quand je suis au bureau et que je l'ai prêt. Les résultats de cette option (après le codage de base64 pour le transport) fonctionnent parfaitement avec .NET / Mono (intégrée), Java (Bulitine) et PHP (McRYPT). P>
a trouvé les liens, mais les deux sont morts: http://www.shopable.co.uk /Des.html et http://www.netdealing.com . Je l'ai mis sur http://pastebin.com/kbrswkjy p>
MHH à l'université, ils m'ont appris que des désormais, il est facilement décrivable ... AES devrait être d'accord, mais je ne pense pas que JavaScript puisse gérer une telle chose.
DES DES TRANSPLIQUES FACITIPHIQUES FACILEMENT DU SUR DES ATTAQUES DE FORCE BUITE, mais Dede n'est pas facilement déchiffrément. AES est une implémentation plus rapide i> que Dedee, donc si JavaScript peut gérer Desde, il peut certainement gérer AES-128. Utilisez Desdee uniquement pour les implémentations hérités (ou si vous ne trouvez pas une autre bibliothèque et comprenez les quelques faiblesses telles que la petite taille de bloc, des clés faibles, des bits de parité dans les clés, etc.).
Permettez-moi de clarifier: le code JS ne signifie pas que j'embrasse l'utilisation non réfléchie de (3) DES sur le côté du client non critique. Mais je considère que c'est un fait que l'utilisation de la cryptographie JS peut être une couche significative de la défense. Donc, je l'utilise, où je pense que ça a du sens.
Cette page dispose d'un mode CTR, qui est disponible en Java. Je recommande les clés de 128 bits ou vous pourriez avoir des problèmes en ce qui concerne les politiques d'exportation Java sur la taille des clés plus grandes. P>
est une page qui utilise des méthodes très utiles de cryptage, y compris les techniques de chiffrement des mots de passe et ciphres avec des contrôles d'intégrité et d'authentification, bien que vous devrez peut-être les bibliothèques du château de rebondissant sur Java pour correspondre à ceux du tout. p>
Il y a des tas de bibliothèques pour JavaScript, mais l'encodage de caractères problèmes seront présents sur l'un d'eux. Donc, assurez-vous d'utiliser le même encodage à la fois sur le côté JavaScript ainsi que sur le côté Java. Une recherche rapide me assure que JavaScript utilise UTF-16 en interne, mais ne me raccroche pas sur ce point. P>
Enfin, ne pas essayer à la maison, les bibliothèques sont là, les utiliser (surtout si elles mentionnent des tests et / ou vecteurs de test officiels). P>
Où puis-je trouver la mise en œuvre de Java d'AES qui utilise le château de Bouncy?
Belcy Castle Bibliothèques Mixez un fournisseur JCE / JCA. Donc, la plupart des fonctionnalités sont ajoutées à l'API Crypto de Java elle-même. Vous pouvez accéder à la mise en œuvre gonflable en utilisant E.G. Cipher.getinstance ("algo / mode / rembourrage", "BC"); Mais seulement après i> vous avez ajouté le fournisseur à la classe de sécurité. Vous pouvez également accéder directement à la mise en œuvre de la bc de niveau inférieure des fonctions de sécurité directement.
Y a-t-il deux exemples compatibles? JavaScript: Mobile-type.co.uk/scripts/aes.htmlled/a >; Java: Java.sun.com/Developer/technicalArticles/security/aes/ ...
Nah, "AES" en Java se traduit par "AES / BCE / PKCS5Padding". Vous aurez besoin de "AES / CTR / NOPADDING".
J'ai essayé d'utiliser Bouncycastle pour déchiffrer le message et après avoir examiné quelques exemples, j'ai fait cette méthode Ideone.com/s4xqv A> (Basé sur une méthode d'algorithme de thé) mais je continue à obtenir l'exception suivante dans le thread "Main" org.bouncycastle.crypto.datalthException: dernier bloc incomplet en décryptage à org.bouncycastle.crypto.paddings.paddedbufferedblockciphher.d ofinal ( Source inconnue)
Vous ne voulez pas chiffrer avec JavaScript, surtout sur le côté client où il est ouvert à la falsification , et n'a pas Générateur de nombres aléatoires cryptographiquement sécurisé . P>
J'ai essayé de la mettre en œuvre, mais j'ai eu des problèmes de codage. P> blockQuote>
Vous avez essayé d'écrire votre propre cryptage Algo? Vous êtes allé contre tout ce que le monde de la sécurité est chéri. Non. Les tutoriels réels qui expliquent comment les œuvres de cryptage ont tellement peur que les gens vont baiser les choses parce qu'ils ne comprennent pas les mathématiques derrière cela, je l'ai réellement vu dans l'un d'entre eux: P>
p>
Si vous ne comprenez pas le cryptage, des choses comme ce que "Générateur de nombres pseudo-aléatoires cryptographiquement la pseudo" est réellement et des attaques communes à ce sujet, vous ne devriez pas faire ça. P>
Si vous ne comprenez pas les choses comme des attaques de canal latéral, vous ne devriez pas le faire. P>
Si vous ne comprenez pas ce qui se passe à Crypto et que vous avez lu au moins deux livres, vous n'avez aucune entreprise la mise en œuvre. P>
crypto n'est pas une boîte noire magique, c'est quelque chose qui est très très facile à bousiller, même sans toucher un peu de code dans une solution emballée. strong> p> Qu'est-ce que devrait em> vous faites? Oubliez le cryptage JS. Je sais, je l'ai essayé moi-même. C'est une perte de temps. Apprendre de mes erreurs. P>
Go Obtenez un certificat SSL, SSL est la meilleure façon pour nous de chiffrer des messages sur le niveau de transport à partir d'un serveur à un client. C'est à peu près aussi sécurisé que vous pouvez obtenir. Si vous faites face à un avisé qui peut vaincre SSL, croyez-moi, votre crypto basé sur JS est également compromis. P>
Une fois que c'est sur le serveur où il est sécurisé d'être altéré, crypter. Tout le reste est un moyen très long de perdre votre temps. P>
Aussi, allez lire ces livres: P> ! [Celui-ci est gratuit] [4] [! [Celui-ci est de l'argent en espèces] [5]] [5] (Source: [Schneier.com] (https://www.schneier.com/images/book-ce-150w.jpg)) sub>
Puis, lorsque vous les comprenez, revenez et crie-moi pourquoi je me trompe et que vous ne comprenez pas combien vous avez besoin de JS sur le client pour faire crypto. P>
Comme les autres réponses indiquées, si vous n'avez pas à chiffrer avec JavaScript, évitez-le. Cependant, il existe des cas d'utilisation valides pour crypter dans JavaScript. p>
Lorsque vous devez, je recommande cette bibliothèque: https://keybase.io/triplesec/ . p>
Il est plus sécurisé que celui de celui qui répond à un autre lien vers. p>
Que voulez-vous dire avec "compatible"?
Je peux donc crypter avec JavaScript et déchiffrer avec Java et vice versa sans problèmes de codage.
J'aimerais vous recommander de lire Le minimum absolu Chaque développeur de logiciel absolument, de manière positive, doit savoir sur Unicode et Ensembles de caractères (pas d'excuses!)
Cela a à voir avec le codage et c'est une bonne lecture. Peu importe si vous cryptez quelque chose avec Java, JavaScript, Python, etc. et le déchiffrer avec .NET, Ruby, etc.
Quels problèmes avez-vous rencontré?
@Nayukiminase J'ai été capable de chiffrer et de déchiffrer correctement sur JavaScript et Java, mais lorsque j'ai essayé de chiffrer JavaScript et de déchiffrer Java et vice versa certains textes n'étaient pas déchiffrés correctement.
Utilise juste HTTPS ou une communication sur SSL ne suffit-il pas suffisant pour vous? Je suppose que vous vouliez éviter l'attaque MITM.