Je cherche un programme de cryptage RSA
j ai besoin d un progaramme (c/c++)de cryptage et decryptage qui utilise la methode RSA et je vous en serai tres reconnaissant si la clé est codée sur 128bits et merci bp
14 réponses
Demande initiale sur la création d’un programme RSA en C/C++ ou Java pour crypter et décrypter, avec l’idée d’une clé de 128 bits. Des réponses variées proposent une implémentation Java avec génération de clé RSA 1024 bits et opérations de crypt/décrypt, ainsi que l’option OpenSSL ou des tutoriels. La meilleure réponse fournit une classe Java MyRsa avec KEY_SIZE fixé à 1024 et méthodes publiques pour générer une paire, chiffrer et déchiffrer, illustrant le processus par un exemple. En nuançant, plusieurs remarquent que RSA n’est pas idéal pour chiffrer des données volumineuses et recommandent son usage pour l’échange de clés via OpenSSL, avec des schémas de padding.
-
bonjour,package myrsa;
import java.io.*;
import java.math.*;
import javax.crypto.*;
import java.security.*;
import java.security.spec.*;
import java.security.interfaces.*;
import java.math.BigInteger;
/**
* Cette classe propose des méthodes permettant de crypter et décrypter des
* messages avec l'algorithme RSA. Le message doit cependant être plus petit
* que KEY_SIZE.
*/
/**
*
* @author kerim
*/
public class MyRsa {public final static int KEY_SIZE = 1024; // [512..2048]
private RSAPublicKey publicKey;
private RSAPrivateKey privateKey;
public MyRsa() {
}
public RSAPublicKey getPublicKey() {
return publicKey;
}
public byte[] getPublicKeyInBytes() {
return publicKey.getEncoded();
}
public RSAPrivateKey getPrivateKey() {
return privateKey;
}
public byte[] getPrivateKeyInBytes() {
return privateKey.getEncoded();
}
public void setPublicKey(RSAPublicKey publicKey) {
this.publicKey = publicKey;
}
public void setPublicKey(byte[] publicKeyData) {
try {
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyData);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
publicKey = (RSAPublicKey)keyFactory.generatePublic(publicKeySpec);
}
catch (Exception e) {System.out.println(e);}
}
public void setPrivateKey(RSAPrivateKey privateKey) {
this.privateKey = privateKey;
}
public void setPrivateKey(byte[] privateKeyData) {
try {
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyData);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
privateKey = (RSAPrivateKey)keyFactory.generatePrivate(privateKeySpec);
}
catch (Exception e) {System.out.println(e);}
}
public void generateKeyPair() {
try {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(KEY_SIZE, new SecureRandom());
KeyPair kp = keyPairGen.generateKeyPair();
publicKey = (RSAPublicKey)kp.getPublic();
privateKey = (RSAPrivateKey)kp.getPrivate();
}
catch (Exception e) {System.out.println(e);}
}
public byte[] crypt(byte[] plaintext) {
return crypt(new BigInteger(addOneByte(plaintext))).toByteArray();
}
public byte[] crypt(String plaintext) {
return crypt(plaintext.getBytes());
}
public byte[] decryptInBytes(byte[] ciphertext) {
return removeOneByte(decrypt(new BigInteger(ciphertext)).toByteArray());
}
public String decryptInString(byte[] ciphertext) {
return new String(decryptInBytes(ciphertext));
}
/**
* Cette méthode permet de tester le bon fonctionnement des autres.
*/
public static void main(String[] args) {
String plaintext = "issam";
System.out.println("plaintext = " + plaintext);
MyRsa rsa = new MyRsa();
rsa.generateKeyPair();
byte[] publicKey = rsa.getPublicKeyInBytes();
byte[] privateKey = rsa.getPrivateKeyInBytes();
byte[] ciphertext = rsa.crypt(plaintext);
System.out.println("ciphertext = " + new BigInteger(ciphertext));
// rsa.setPublicKey(publicKey);
// rsa.setPrivateKey(privateKey);
String plaintext2 = rsa.decryptInString(ciphertext);
System.out.println("plaintext2 = " + plaintext2);
if (!plaintext2.equals(plaintext)) System.out.println("Error: plaintext2 != plaintext");
}
private BigInteger crypt(BigInteger plaintext) {
return plaintext.modPow(publicKey.getPublicExponent(), publicKey.getModulus());
}
private BigInteger decrypt(BigInteger ciphertext) {
return ciphertext.modPow(privateKey.getPrivateExponent(), privateKey.getModulus());
}
/**
* Ajoute un byte de valeur 1 au début du message afin d'éviter que ce dernier
* ne corresponde pas à un nombre négatif lorsqu'il sera transformé en
* BigInteger.
*/
private static byte[] addOneByte(byte[] input) {
byte[] result = new byte[input.length+1];
result[0] = 1;
for (int i = 0; i < input.length; i++) {
result[i+1] = input[i];
}
return result;
}
/**
* Retire le byte ajouté par la méthode addOneByte.
*/
private static byte[] removeOneByte(byte[] input) {
byte[] result = new byte[input.length-1];
for (int i = 0; i < result.length; i++) {
result[i] = input[i+1];
}
return result;
}} -
ModérateurHello.
Je pense que tu trouvera ce qu'il te faut dans la librairie OpenSSL.
Les sources sont disponibles et elle contient l'algo RSA.
http://www.openssl.org/ -
Je cbherche un programme de cryptage et de décryptage RSA en langage java
-
salut
moi aussi je travail sur le RSA , j ai programmer algoritme mais je trove toujour des difficulter pour le decryptage , defois il crypte tres bien defois non , je ne sais pas ou est il le probleme
SVP aider moi -
salut
moi aussi je cherche le meme programme , bon j'ai programmaer l'algorithme RSA en c++ , mais il ne decrypte pas correctement (defois)
SVP aider moi -
salut
je travaille actuellement sur le cryptage par rsa.
Je suis proche de le réaliser.
dans deux ou trois jours je le méttrai en ligne.
c'est un code en c.
bon courage-
Salut,
Je cherche moi aussi a décrypter du texte (j'ai la clef privée sur 2048 bits, mot de passe et clef publique avec un algo RSA), mais je n'arrive pas a trouver un utilitaire sympa pour faire ça simplement.
T'as pu finir ton progr en C? si oui, t'es prets partager les sources et l'exe?
Je sais que le post date un peu, mais un petit coup de main serait bienvenue
Merci,
Ced. -
-
-
ContributeurDis moi il m'intéresse ton programme rsa, mais je voulais savoir comment tu as fait pour générer des grands nombres premiers et quelle biblio tu as utilisé pour les gérer. Si tu le mets éffectivement en ligne, bah si tu peux dire ou ce serait sympa : )
-
je cherche des document sur le rsa sertout operateur arirhmetique pour rsa j'ai bosoin et je suis presse
-
salut
j ai besoin d un progaramme (c ou bien java)de cryptage et decryptage avec l'algorithme RSA pour completer mon projet de fin d'etude.
et merci... -
salut a tous
il ya un bon tuto sur ca c'est sur http://www.siteduzero.com/tutoriel-3-2170-la-cryptographie-asymetrique-rsa.html -
svp ,je cherche un programme de cryptage RSA en java
-
Salut à tous,
je cherche à implémenter des attaques sur RSA, est ce que quelqu'un à déjà réaliser ça.
Merci -
salut ;
supposons qu'on veux crypter/decrypter un fichier!!! comment on procéde dans ce cas?
quelles sont les modifications à faire dans le prog MyRSA proposé ci dessus?
merci -
merci
je vous 1 programme de cryptage de un fichier basé sur la chiffrement par décalage merci et je veux la réponse plus vite stp-
Bonjour, votre message est hors sujet, et peu respectueux, veuillez lire la charte svp avant de poster.
bonne soirée
-