2012-03-14 1 views
-1

J'essaie d'écrire un programme RSA pour en savoir plus sur le chiffrement. J'utilise Java, mais je suis à la recherche de conseils généraux.Meilleures pratiques de programmation

Ma question est, quelle est la meilleure façon de prendre le contenu d'un fichier, et le transformer en blocs de doubles pour élever à une puissance?

dire J'ai un fichier texte ASCII qui contient le texte intégral du hameau (ou K & R C, ou autre) je transforme en blocs d'octets, et augmenter le bloc entier à une puissance. Si j'élève chaque octet à une puissance, il est vulnérable à l'analyse de fréquence.

Maintenant, je lis le fichier dans un tableau d'octets, transtypé en double tableau, transformant cela en un double tableau de taille 2 [64] [fichier/64], et pour chaque double [] dans le tableau 2d concaténer tous les doubles à une corde, moulent cette corde à un double (ou devrait-il être un biginteger?), alors faites mes maths.

C'est horriblement compliqué.

Je pouvais le faire sans le tableau 2d, mais cela semblait être un moyen plus facile de gérer les blocs puisque vous ne pouvez pas découper les tableaux en java. Vous n'avez pas besoin de me donner un code, mais je cherche une meilleure architecture.

Répondre

0

Je vous conseille vivement d'étudier d'autres implémentations et d'en apprendre un peu plus sur RSA avant d'aller plus loin, car vous êtes maintenant plutôt perdu. Vous ne devez pas utiliser de doubles et vous ne pouvez pas traiter le texte entier comme un nombre unique. Les textes plus volumineux sont toujours cryptés avec une clé symétrique, puis cette clé est cryptée avec la clé RSA. Un chiffrement RSA unique ne peut contenir qu'un nombre plus petit que le module, et encore moins en raison du remplissage.

BigInteger serait un bon choix oui, il a des méthodes pour les calculs de nombres premiers pour une bonne raison. Il utilise des tableaux d'implémentation longue comme support (eh bien, le JDK Oracle le fait, mais je présume que les autres implémentations Java utiliseront aussi des longs).

+0

Je ne peux pas traiter le texte entier comme un nombre, mais si je crypte juste chaque octet, il est très facile d'écrire un programme pour rechercher des modèles – Muricula

+0

Je ne peux pas traiter le texte entier comme un nombre, mais si Je viens de crypter chaque octet, il tomberait à l'analyse de fréquence. Je dois élever le bloc entier à un pouvoir. Aussi, si je devais crypter quelque chose avec un algorithme symétrique comme AES, quel serait le point de la RSA? Je vois ce que vous dites sur le cryptage de la clé, mais pourquoi ne pas utiliser l'échange de clés duffie hellman? J'utilise des doubles parce qu'ils sont le plus grand type de données primitif. Ils sont plus longs que les longs. Je pense que je vais bientôt le retravailler pour bigIntegers, je commence simple. Avez-vous des conseils concernant d'autres implémentations? – Muricula

+0

horodatage darned sur les commentaires d'édition – Muricula