sprere16
Messages postés13Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention20 décembre 2006
-
17 déc. 2006 à 18:48
sprere16
Messages postés13Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention20 décembre 2006
-
17 déc. 2006 à 23:01
Bonsoir tt le monde, j'ai un problème avec mon programme.
C'est un programme de cryptage (DES, RSA, Hashage MD5 ) avec bouncycaslte, Tous se fait nikel
Je vx signer un fichier, (j'utilise le RSA pour signer un fichier hashé avec MD5 )
Ce que je fé, c utiliser la foncton RSA.decrypt() ( ki marche nikel) pour signer (avec Engine.init(true, privParameters); pour signer au lieu de eng.init(false, privParameters); pour decrypter ) ==> ça marche
mais qd je vx unsigner mon fichier, j'utilise RSA.crypt() ( ki marche nikel ) pour unsigner (avec Engine.init(false, pubParameters); pour unsigner au lieu de Engine.init(true, pubParameters); pour crypter ) ==> j'ai une erreur de ce type :
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:111)
at RSA.unsigned(RSA.java:333)
////////////////////////////////////////////////////////////////////////////
//////////////////////////Encrypt ()////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public boolean encrypt(){
AsymmetricBlockCipher eng = new RSAEngine();
byte[] inBuf;
try {
//lecture de la key
BufferedInputStream ink = new BufferedInputStream(new FileInputStream(key));
BufferedReader br = new BufferedReader(new InputStreamReader(ink));
BigInteger mod = new BigInteger(br.readLine());
BigInteger pubExp = new BigInteger(br.readLine());
RSAKeyParameters pubParameters = new RSAKeyParameters(false, mod, pubExp);
br.close();
ink.close();
eng.init(true, pubParameters);
//cryptage du fichier
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(fo));
File f = new File(fi);
DataInputStream in = new DataInputStream(new FileInputStream(f));
//Definition de la taille du block a crypter
int inBlockSize = eng.getInputBlockSize();
int outBlockSize = eng.getOutputBlockSize();
////////////////////////////////////////////////////////////////////////////
//////////////////////////Decrypt ()////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public boolean decrypt(){
AsymmetricBlockCipher eng = new RSAEngine();
byte[] inBuf;
try {
//lecture de la key
BufferedInputStream ink = new BufferedInputStream(new FileInputStream(key));
BufferedReader br = new BufferedReader(new InputStreamReader(ink));
BigInteger mod = new BigInteger(br.readLine());
BigInteger pubExp = new BigInteger(br.readLine());
BigInteger privExp = new BigInteger(br.readLine());
BigInteger p = new BigInteger(br.readLine());
BigInteger q = new BigInteger(br.readLine());
BigInteger pExp = new BigInteger(br.readLine());
BigInteger qExp = new BigInteger(br.readLine());
BigInteger crtCoef = new BigInteger(br.readLine());
RSAKeyParameters privParameters = new RSAPrivateCrtKeyParameters(mod, pubExp, privExp, p, q, pExp, qExp, crtCoef);
br.close();
ink.close();
eng.init(false, privParameters);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(fo));
File f = new File(fi);
byte[] buffer = new byte[(int)f.length()];
DataInputStream in = new DataInputStream(new FileInputStream(f));
//Definition de la taille du block a crypter
int inBlockSize = eng.getInputBlockSize();
int outBlockSize = eng.getOutputBlockSize();
////////////////////////////////////////////////////////////////////////////
//////////////////////////Sign ()///////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public boolean signed(){
AsymmetricBlockCipher eng = new RSAEngine();
byte[] inBuf;
try {
//lecture de la key
BufferedInputStream ink = new BufferedInputStream(new FileInputStream(key));
BufferedReader br = new BufferedReader(new InputStreamReader(ink));
BigInteger mod = new BigInteger(br.readLine());
BigInteger pubExp = new BigInteger(br.readLine());
BigInteger privExp = new BigInteger(br.readLine());
BigInteger p = new BigInteger(br.readLine());
BigInteger q = new BigInteger(br.readLine());
BigInteger pExp = new BigInteger(br.readLine());
BigInteger qExp = new BigInteger(br.readLine());
BigInteger crtCoef = new BigInteger(br.readLine());
RSAKeyParameters privParameters = new RSAPrivateCrtKeyParameters(mod, pubExp, privExp, p, q, pExp, qExp, crtCoef);
br.close();
ink.close();
eng.init(true, privParameters);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(fo));
File f = new File(fi);
byte[] buffer = new byte[(int)f.length()];
DataInputStream in = new DataInputStream(new FileInputStream(f));
//Definition de la taille du block a crypter
int inBlockSize = eng.getInputBlockSize();
int outBlockSize = eng.getOutputBlockSize();
////////////////////////////////////////////////////////////////////////////
//////////////////////////Unsign ()/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public boolean unsigned(){
AsymmetricBlockCipher eng = new RSAEngine();
byte[] inBuf;
try {
//lecture de la key
BufferedInputStream ink = new BufferedInputStream(new FileInputStream(key));
BufferedReader br = new BufferedReader(new InputStreamReader(ink));
BigInteger mod = new BigInteger(br.readLine());
BigInteger pubExp = new BigInteger(br.readLine());
RSAKeyParameters pubParameters = new RSAKeyParameters(false, mod, pubExp);
br.close();
ink.close();
eng.init(false, pubParameters);
//cryptage du fichier
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(fo));
File f = new File(fi);
DataInputStream in = new DataInputStream(new FileInputStream(f));
//Definition de la taille du block a crypter
int inBlockSize = eng.getInputBlockSize();
int outBlockSize = eng.getOutputBlockSize();
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 déc. 2006 à 19:52
Salut,
merci d'éviter le langage sms tu est sur un forum ici pas sur ton téléphone portable !
la prochaine fois donne pas toute la classe mais seulement les portion critiques... ton erreur veux simplement dire que tu dépasse la capacitée du tableau... (pas plus de détail à moins que tu précise ou est la ligne 333 correspondant à :
at RSA.unsigned(RSA.java:333)
trop la flemme de lire tout le code...
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."