Voilà j'ai un problème sur mon site : j'ai trouvé un applet sympa qui chiffre et déchiffre le RSA sur ce site http://tpe.crypto.free.fr/ dans la section RSA.
Voici le code correspondant à cet applet :
Citation : code : java
/* ======================================================== *
* Created on 25/09/03 by Eric Groshens, spunky7802@free.fr *
* =========== Distributed under GNU/GPL license ========== *
* === Look at http://www.gnu.org for more informations === *
* ======================================================== *
* ======================================================== *
* ========================== JRSA ======================== *
* ======================================================== *
* ================== The RSA algorithm =================== *
* ======================================================== *
*/
void generate_actionPerformed(ActionEvent ac)
{
if (tP.getText().equals("") || !(p.isProbablePrime(10))) p = new BigInteger(16, 10, new Random());
else p = new BigInteger(tP.getText());
if (tQ.getText().equals("") || !(q.isProbablePrime(10)) || p.compareTo(q) == 0) q = new BigInteger(16, 10, new Random());
else q = new BigInteger(tQ.getText());
if (p.compareTo(q) == 0) q = new BigInteger(16, 10, new Random());
if (p.compareTo(q) == 0) q = new BigInteger(16, 10, new Random());
if (tE.getText().equals(""))
{
e = new BigInteger("2");
} else
{
e = new BigInteger(tE.getText());
}
n = p.multiply(q);
phi = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE));
if (e.gcd(phi) != BigInteger.ONE)
{
BigInteger i = n.divide(new BigInteger("4"));
while ((i.gcd(phi)).compareTo(BigInteger.ONE) != 0)
{
i = i.add(BigInteger.ONE);
}
e = i;
}
d = e.modInverse(phi);
tP.setText(p.toString());
tQ.setText(q.toString());
tE.setText(e.toString());
tD.setText(d.toString());
}
void encrypt_actionPerformed(ActionEvent ac)
{
generate_actionPerformed(ac);
input_asc = inputArea.getText();
output_asc = "";
byte b1[] = input_asc.getBytes();
BigInteger b2[] = new BigInteger[b1.length];
for (int i = 0; i < b1.length; i++)
{
BigInteger j = BigInteger.valueOf((int)b1[i]);
b2[i] = j.modPow(e, n);
}
for (int i = 0; i < b2.length; i++)
{
output_asc += (b2[i].toString() + "-");
}
outputArea.setText(output_asc);
}
void decrypt_actionPerformed(ActionEvent ac)
{
if (tP.getText().equals("") || !(p.isProbablePrime(10))) JOptionPane.showMessageDialog(messageFrame, "p n'est pas premier!", "Erratum", JOptionPane.ERROR_MESSAGE);
else p = new BigInteger(tP.getText());
if (tQ.getText().equals("") || !(q.isProbablePrime(10)) || p.compareTo(q) == 0) JOptionPane.showMessageDialog(messageFrame, "q n'est pas premier ou est égale à p!", "Erratum", JOptionPane.ERROR_MESSAGE);
else q = new BigInteger(tQ.getText());
d = new BigInteger(tD.getText());
n = p.multiply(q);
input_asc = inputArea.getText();
output_asc = "";
BigInteger b1[] = toBI(input_asc);
byte b2[] = new byte[b1.length];
for (int i = 0; i < b1.length; i++)
{
b2[i] = (byte)b1[i].modPow(d, n).intValue();
}
for (int i = 0; i < b2.length; i++)
{
output_asc += (char)b2[i];
}
outputArea.setText(output_asc);
}
BigInteger[] toBI(String s)
{
String number = "";
int j = 0;
for (int i = 0; i < s.length(); i++)
{
if (s.charAt(i) == '-') j++;
}
BigInteger bi[] = new BigInteger[j];
j = 0;
for (int i = 0; i < s.length(); i++)
{
if (s.charAt(i) != '-') number += s.charAt(i) + "";
else
{
bi[j] = new BigInteger(number);
j++;
number = "";
}
}
return bi;
}
}
Seulement le problème c'est que je n'ai aucune idée de la façon d'insérer cet applet dans ma page :o
En l'occurence je voudrais savoir ce que je dois mettre "autour" de ce code pour que l'applet fonctionne .
Voila donc si vous pouviez m'aider ce serait super sympa ;)