begin process at 2010 02 09 18:39:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurite & cryptage

 > CHIFFREMENT RSA (RIVEST SHAMIR ADLEMAN)

CHIFFREMENT RSA (RIVEST SHAMIR ADLEMAN)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurite & cryptage Classé sous :rsa, chiffrement, cryptage, biginteger Niveau :Initié Date de création :02/01/2009 Date de mise à jour :13/01/2009 19:57:07 Vu / téléchargé :2 832 / 495

Auteur : ciberrique

Ecrire un message privé
Site perso
Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note

 Description

Bonjour, je vous met une source qui permet de chiffrer un tableau de byte en RSA, j'utilise la classe BigInteger pour la gestion des grands nombres, on notera toutefois que le chiffrement via RSA est très lent par conséquent on pourra l'utiliser pour une authentification lors d'une echange de données dans un protocol sécurisé (SSL, TSL,...) par exemple. Pour chiffrer de grande quantité de donnée on préferera un algorithme de chiffrement symétrique (clé secrete) par exemple AES (je vais mettre un code AES sous peu)...


 Conclusion

Si vous voyez des bugs ou des erreurs ou si vous avez des commentaires ou des questions n'hesitez pas.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   RSA
    •   bin
      • Fenetre.classTélécharger ce fichier [Réservé aux membres club]2 435 octets
      • Principale.classTélécharger ce fichier [Réservé aux membres club]513 octets
      • RSA.classTélécharger ce fichier [Réservé aux membres club]4 492 octets
    •   src
    • .classpathTélécharger ce fichier [Réservé aux membres club]232 octets
    • .projectTélécharger ce fichier [Réservé aux membres club]379 octets

Télécharger le zip


 Historique

02 janvier 2009 16:15:23 :
Correction des commentaires
08 janvier 2009 22:41:33 :
Je me suis rendu compte d'une erreur de code qui rend cet algo très peu fiable par conséquent je supprime le zip et je remettrai sous quelques jours une source corrigée.
10 janvier 2009 00:03:01 :
J'ai modifié le code les attaques par fréquence et une attaque par comparaison a partir de la clé publique n'est plus possible.
10 janvier 2009 00:04:59 :
J'ai modifié le code les attaques par fréquence et une attaque par comparaison a partir de la clé publique n'est plus possible.
13 janvier 2009 18:55:27 :
modification de la description
13 janvier 2009 19:57:07 :
Ajout d'une interface pour tester le chiffrement

 Sources du même auteur

Source avec Zip CHIFFREMENT AES (ADVANCED ENCRYPTION STANDARD) 128 BITS
Source avec Zip CALCUL DE HASH SHA 256

 Sources de la même categorie

CRYPTAGE SELON LA MÉTHODE DE CÉSAR par pyo656
Source avec Zip @$!__STEGACHAR__451 par CHAR As Human
Source avec Zip CHIFFREMENT AES (ADVANCED ENCRYPTION STANDARD) 128 BITS par ciberrique
Source avec Zip CALCUL DE HASH SHA 256 par ciberrique
Source avec Zip Source avec une capture LECTEUR DE CERTIFICATS GPG par dje_jay

 Sources en rapport avec celle ci

Source avec Zip CHIFFREMENT AES (ADVANCED ENCRYPTION STANDARD) 128 BITS par ciberrique
Source avec Zip Source avec une capture STEGANOGRAPHIE & RSA, SWT par the_wwt
Source avec Zip Source avec une capture JCODEX, DIFFÉRENTES MÉTHODES DE CRYPTAGE DE DONNÉES par Taranael
Source avec Zip Source avec une capture APPLICATION COMPLÈTE POUR CRYPTER DES FICHIERS (RIJNDAEL, RS... par Vallorbain
GÉNÉRER DU P7M OU PKCS#7 par Syruis

Commentaires et avis

Commentaire de imeneimene le 13/01/2009 15:40:01 8/10

Bonjour ,
je trouve que votre code est hyper génial , simple et efficace , chapeau...
mais comme je suis débutante en JAVA , j'ai pas bien compris le fonctionnement de toutes les fonctions existantes , j'aimerais bien ( si tu peux bien sur) m'envoyer une explication complète sur la fonctions de chiffrement et de déchiffrement
tu peux aussi réaliser une interface pour permettre aux utilisateurs de faire entrer le mot a crypter ainsi qu'un affichage du texte crypté
Merci de me contacter sur l'adresse suivante : imeneannaba23@yahoo.fr

Commentaire de kari21 le 14/01/2009 20:31:41

bonjour , votre code et claire et fonctionne très bien mais j'ai une petite remarque !!! pourquoi ne pas réaliser un autre bouton déchiffrer pour déchiffrer le texte déjà chiffrer comme ça l'user pourra vérifier l'intégrité de son message  bien sur en sauvegardant le texte chiffré affiché sur l'interface dans un tableau ou dans un fichier pour l'utiliser ????

Commentaire de ciberrique le 14/01/2009 20:34:13

Vous avez tout compris il faudrait sauvegarder le texte chiffrer dans un fichier pour pouvoir dechiffrer ensuite ce texte, et ce n'est pas le but de cette source, le but de cette source et de montrer comment fonctionne l'algorithme RSA.
Merci pour vos commentaires.

Commentaire de chinfine23 le 16/01/2009 21:26:15

salut tt le monde,c'est vraiment un code génial mais j'arrive pas à afficher les nombres p,q,clé publique et la clé privée,est ce qu'il yaune solution???
(sachant que je suis débutant en java........)
merci:chin_fine1985@hotmail.com

Commentaire de ciberrique le 17/01/2009 00:11:21

Salut, dans le code de la classe principale rajoute a la fin :
System.out.println(rsa.getPublicKey());
System.out.println(rsa.getPrivateKey());

p et q son des attributs privés de la classe l'utilisateur n'a pas besoin de les connaitres il ne servent que au moment de la creation des clé il ne sont donc pas conservés en mémoire, si tu les veux vraiment je te laisse t'amuser a modifier le code.

Commentaire de aminablonde le 25/01/2009 14:26:19

Bonjour ,
moi aussi je veux réaliser un bouton pour déchiffrer le texte  déja chiffré , qulk'un peux me dire comment on enregistre un texte dans un fichier et comment le récupérer aprg aussi une question pour le développeur du code , g pas bien compri comment t'as fait pr chiffrer le texte parceke le texte en caractères alors que le chiffrement se fait sur des entiers??
Merci de me répondre

Commentaire de ciberrique le 25/01/2009 16:36:23

Bonjour, comme je ne comprend pas exactement ta question je vais repondre aux deux possibilités que j'ai compris :

pour chiffrer en RSA tu fais : a^e mod n

sinon si c'est concernant le chiffrement que j'applique avec le graphique :
txtsortie.setText(new String(rsa.chiffrer(txtentree.getText().getBytes())));

le chiffrement ce fait sur une suite de byte concaténés pour former un grand nombre (inférieur à n)

Sinon je répéte on n'utilise pas RSA pour chiffrer des grandes quantités de données, donc on exclu le chiffrement de fichier ou de texte avec, RSA c'est bien pour chiffrer un condensé ou une clé privé par exemple.

Commentaire de aminablonde le 25/01/2009 18:27:26

Bonjour cibberrique,
je comprend pas l'utilité de ce fragment de code :

    while ( i<mess.length){
        for (int j = 0; j<this.blocsize;j++){
    if (i+j<mess.length)
                 {
bloc[j] = mess[i+j];
}
            else{
bloc[j] = 0;
je  vois pas a quoi sa sert;
}
}


y'a aussi sa
  

   private byte[] intToBytes(int i){
byte res[] = new byte[4];
res[0] = (byte)((i) >>> 24);  
res[1] = (byte)((i) >>> 16);  
res[2] = (byte)((i) >>> 8);
res[3] = (byte)((i));
return res;
}

private int bytesToInt(byte b[]){
return (b[0] & 0xFF) << 24 |
(b[1] & 0xFF) << 16 |
(b[2] & 0xFF) << 8 |
(b[3] & 0xFF);
}
Merci de me répondre , c urgent

Commentaire de ciberrique le 25/01/2009 18:45:19

Je ne vais pas vous faire un cours sur le chiffrement de données mais en gros le premier bout de code permet de grouper tout les bytes dans un tableau et si on a depacer le nombre de byte du message de depart alors on complete avec des 0.

Les deux fonctions convertissent un entier en 4 bytes et 4 bytes en un entier.

Et je rappel que j'ai mis ce code à un niveau initié et il y a une raison....

Commentaire de imeneimene le 25/02/2009 17:32:52

Bonjour ,
je veux savoir est ce que l'instruction :
   this.d = this.e.modInverse(w);
veux dire que d=(e puiss -1) mod w;
merci de me répondre.

Commentaire de ciberrique le 25/02/2009 21:07:41

Salut, non je crois pas renseigne tout sur l'algorithme d'euclide etendu pour en savoir plus.
J'ai pas étudié cette fonction je peux pas t'en dire plus.

Commentaire de imeneimene le 06/03/2009 17:45:12

Bonjour ,
dans le chiffrement RSA il faut que les deux chiffres p et q soient premiers entre eux , je crois qu'il faut faire un  test sur le pgcd  de q et p ....ai je raison?,

Commentaire de ciberrique le 06/03/2009 21:45:09

Salut,

while ((!this.e.gcd(w).toString().equals("1")) || (this.e.compareTo(w) != -1 )){ // e premier avec w et e < w


A bientot

Commentaire de imeneimene le 12/03/2009 22:28:48

bonjour
le test est pour vérifier que e et w sont premier entre eux ,  je crois qu'iul faut ajouter un autre test genre :

while ((!this.p.gcd(q).toString().equals("1"))
Merci de me  répondre

Commentaire de ciberrique le 12/03/2009 22:31:46

Salut, non il faut que e soit premier avec w pour qu'il soit inversible, donc :

!this.e.gcd(w).toString().equals("1")

http://fr.wikipedia.org/wiki/Rivest_Shamir_Adleman

Commentaire de salrouge le 05/05/2009 13:57:27

bonjour
j'ai ajouté à ton code un btn déchiffrer, voici le code que j'ai ajouté

btdechiffer=new JButton("Dechiffrer");
btdechiffer.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        txtentree.setText(new String(rsa.dechiffrer(txtsortie.getText().getBytes())));
    }
});

malheureusement le texte d'origine n'est plus retrouvé.

Commentaire de ciberrique le 05/05/2009 17:13:10

Salut, si le txtsortie c'est un élément fénêtré il est possible que les bytes ne soient pas conservés mais convertis pour être compatible avec l'affichage dans une fenetre, toutefois je ne connais presque pas les fenêtre en java.

Commentaire de salrouge le 05/05/2009 17:17:59

j'y ai pensé aussi et j'ai appelé la fonction de déchiffrement avec comme parametre, le résultat du chiffrement du texte entré, sans passer par une zone de texte. mais ca n'a toujours pas marché

Commentaire de ciberrique le 05/05/2009 17:19:59

Je pense que tu dois avoir une erreur quelques part car je n'ai pas constaté d'erreur dans mon code jusqu'a maintenant.

Commentaire de salrouge le 05/05/2009 17:22:53

je suis d'accord avec toi, mais je t'invite à faire le test inverse càd créer un bouton déchiffrer qui utilise la methode dechiffrer que tu as créée.

Commentaire de ciberrique le 05/05/2009 17:28:18

Ok je comprend mieu, je n'ai pas testé mais j'ai compris ce que tu veux dire car j'avais fait le même teste quand on m'a demandé de mettre une fenetre pour afficher le chiffré. Je confirme il n'est pas possible de déchiffrer a partir de la fenetre, par contre si tu veux une preuve que l'on peut dechiffrer tu as juste à mettre en commentaire la fenetre dans la classe principale.

Commentaire de salrouge le 05/05/2009 17:34:50

oui tu as raison
j'avais pas vu le test commenté dans la classe principale.
tout marche tres bien
je te félicite pour ce code.
merci

Commentaire de ciberrique le 05/05/2009 17:36:27

Au contraire je suis content de voir que cela interesse et apporte un peu d'aide à certain. Si toi ou un autre avez des questions n'hesitez pas.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[cryptage] Fusionner un code RSA et un reso TCP [ par ckiki93 ] [cryptage] Fusionner un code RSA et un reso TCP [ par ckiki93 ] Dsl pour le post Vide precedent....1-Les codes sources sont Correct. mon probleme ? 2-je voudrais réaliser le cryptage sur un reseau TCP Serveur Clien classe matht.BigInteger [ par hamidkhelifa ] salut a tousj'aimerais savoir si qq peut me donne une idee pour incrementer un biginterger et si il est possible de le mettre dans une boucle Exemple Cryptage simple d'une chaine de caracteres [ par fllacer ] Bonjour,je cherche comment crypter simplement une String en Java et la d&#233;crypter.ex : String aCrypter = "password";String crypt = cryptage ("pass Héritages, sous classes, comprends pas! [ par lowang ] Bonjour a tous, voila mon probl&#232;me: j'ai construit une sous-classe de B Cryptage DES en UNICODE [ par neena ] Je vous explique mon gros probleme : jai un prog qui crypte un mot de passe en DES (&#231;a marche) mais le pb cest que les charact&#233;res qu'il me Urgent problème pour un logiciel de cryptage à algorythme novelle génération invilable [ par lulu42 ] Bonjour.J'aimerais savaoir coment je peux convertir un integer (dont la valeur ne d&#233;passe pas 255,&nbsp;je voudrais donc ignorer l'octet de poids cryptage [ par progrima ] Bonjour à tous!! Je veux réaliser une application qui fait le cryptage des fichiers, sur internet j'ai trouvé plusieurs type de cryptage, mais c'est q cryptage et decryptage [ par thrmgs ] Bonjour&nbsp;&nbsp;&nbsp;a tousje suis debutant en java script.je cherche a creer 2 fenetre ,l une qui permet de crypter le message grace a RSA et l a Format nombre : big integer sous forme expo. [ par jcodeunpeu ] Bonsoir &#224; tous, je cherche &#224; afficher un nombre d&#233;passant le type long au format exponentiel exemple : &nbsp;&nbsp; public BigInteger


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales