2010-06-05 8 views
0

OK, maintenant j'ai codé pour une implémentation de AES-128 :) Cela fonctionne bien.Comment rendre mon algorithme de cryptage plus de 128 bits?

Il prend en 128 bits, et retourne encrypte 128 bits

Alors, comment puis-je améliorer mes fonctions afin de pouvoir traiter plus de 128 bits?

Comment faire en sorte que l'algorithme de chiffrement gère des chaînes plus grandes?

Le même algorithme peut-il être utilisé pour chiffrer des fichiers? :)

La définition de la fonction est

public byte[] Cipher(byte[] input) 
{ 

} 
+0

... Oui ... 128 bits fait référence à la taille de la clé, pas à la taille des données qu'elle peut gérer en général. Vous semblez un peu confus ... Comment avez-vous testé votre implémentation AES est correcte? –

+0

En fait, j'ai implémenté la version AES 128 bits. Les tailles de clé AES peuvent gérer est de 128 192 et 256 bits. Mais quelle que soit la taille des clés, il ne peut gérer que 128 bits à la fois :) –

+0

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation – kennytm

Répondre

5

Il existe différents « chaîne » ou modes « codebook » que vous pouvez exécuter un chiffrement par bloc. Vous aurez besoin de lire à leur sujet et de décider que vous » Je vais soutenir. Vous devrez également décider quel type de remplissage de bloc vous ferez pour les borniers partiellement remplis.

Avoir une lecture de http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation pour commencer.

Oui, bien sûr, vous pouvez crypter des fichiers. Vous venez d'écrire les blocs dans un autre fichier.

Obtenez une copie de Applied Cryptography si vous n'en avez pas déjà. C'est la meilleure intro dans ce genre de chose que j'ai lu, même si c'est assez long dans la dent maintenant.

+1

+1 Pour répondre à la question. Si vous faites quelque chose de plus que la recherche .... vous aurez également besoin de 4 doctorats en mathématiques théoriques et appliquées, 3 en informatique, 2 en cryptographie suivi de plus de 15 ans de travail pour la NSA ou similaire. – Rusty

1

S'il s'agit d'un exercice d'apprentissage, faites ce que tout le monde a dit.

Si cela se passe n'importe où près de systèmes de production, données confidentielles, etc - arrêter là. N'écrivez pas votre propre code de cryptage, JAMAIS. Il y a un million de façons très subtiles de le bousiller et seulement une façon de le faire correctement. Je suis sûr que vous êtes un génie régulier et tout, mais la forte probabilité est que vous écrivez involontairement un code subtilement cassé, facilement compromis sans même le savoir; tout le monde le fait - c'est comme ça que ça fonctionne. Si c'est pour un vrai projet, faites-vous une faveur massive et utilisez des bibliothèques de cryptage éprouvées qui ont subi les frondes et les flèches d'une fortune scandaleuse, ont survécu aux épreuves de la vie dans le monde sauvage, ont été attaquées, corrigées et sont toujours debout.

D'ailleurs, je suis sûr que vous avez assez à faire déjà :)

+0

Je suis complètement d'accord :) –

+0

Il n'y a pas d'algorithmes de chiffrement qui ont été craqués puis corrigés (du moins pas une fois qu'ils ont atteint la norme AES/DES). Ils sont cassés et ne sont plus utilisés. –

+2

Et ne pensez pas à faire une fusée, c'est pour les experts de la NASA, et ne pensez pas à la cuisson à partir d'ingrédients crus, micro-ondes un repas prêt à la place. –

1

Tout d'abord, ne vous met pas en œuvre des algorithmes de chiffrement - utiliser une implémentation créée par des experts. Les chances sont bonnes que vous fassiez des erreurs et que vous construisiez un système non sécurisé. Le .NET Framework dispose d'un support intégré pour la cryptographie dans l'espace de noms System.Security, y compris un AES algorithm imlementation. (Le premier ne s'applique pas si vous le faites pour le plaisir;)

Les données de codage plus grande la taille de bloc que vous devez choisir un mode de fonctionnement. Wikipedia répertorie les plus communs here et certains plus généralement utilisés pour le cryptage de disque here.

1

Il existe une bibliothèque open source C++ Crypto ++ http://www.cryptopp.com/ Bien qu'il semble que vous essayiez de l'implémenter en Java, je pense que ça vaut peut-être la peine de jeter un oeil. Après tout, tout est une question d'algorithme ...

+0

http://www.pgp.com/ est un produit crypto commercial. http://www.openpgp.org/ est une norme de cryptage d'email. http://www.gnupg.org/ est une implémentation open source d'OpenPGP. Et ne faites jamais confiance à un système de chiffrement tant que vous n'avez pas vu le code source. – Michael

+0

Dans une certaine mesure, la technologie de cryptographie est sensible ... http://en.wikipedia.org/wiki/Export_of_cryptography_in_the_United_States#Current_status – Michael