Bonjour,
Il nous a été donné un devoir qui nous demandais de décrypter un message crypté en RSA, nous avons la clef publique, le modulo et phi du modulo, ce devrait donc être simple à mettre en oeuvre cependant le résultat que j'ai trouvé n'est pas cohérent.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.math.BigInteger;
 
class RSA
{
 
	public static BigInteger[] algorithmedEuclideEtendu(BigInteger a, BigInteger b)
	{
		BigInteger r, r1, u, u1, v, v1, rs, us, vs, q;
 
		r = a;
		r1 = b;
 
		u = BigInteger.valueOf(1);
		u1 = BigInteger.valueOf(0);
		v = BigInteger.valueOf(0);
		v1 = BigInteger.valueOf(1);
 
		while(r1.intValue() != 0)
		{
			q = r.divide(r1);
			rs = r; us = u;	vs = v;
			r = r1;	u = u1;	v = v1;
			r1 = rs.subtract(q.multiply(r1));
			u1 = us.subtract(q.multiply(u1));
			v1 = vs.subtract(q.multiply(v1));
		}
 
		BigInteger[] returnArray = new BigInteger[3];
 
		returnArray[0] = r;
		returnArray[1] = u;
		returnArray[2] = v;
 
		return returnArray;
	}
 
	public static void main(String[] args)
	{
		BigInteger p, q, n, e, d, k, x;
 
		e = new BigInteger("11");
		n = new BigInteger("1760250096402811749199611608575084934851613507070884458068671022833817662936408929077786843687914521447812500504132975035459244678032179536523212946815460293715097607");
		x = new BigInteger("1202788616096701030005224989473476484101298041707594228423000867741715449622721467785201153763640466006916078469019662240402174777496379716252510944035310010342328412");
		p = new BigInteger("2254061458764999793801604169771561506176169383328769494484948502693543301604774269912806541179731916874542264167302030787704172610985239934635969");
		q = new BigInteger("780923736377291471303");
 
		BigInteger phi = p.subtract(BigInteger.valueOf(1)).multiply(q.subtract(BigInteger.valueOf(1)));
 
		BigInteger[] returnArray = algorithmedEuclideEtendu(phi, e);
 
		d = returnArray[2];
 
		String message = null;
 
		try
		{
			message = new String(x.modPow(d, n).toByteArray(), "UTF-8");
		}
		catch(java.io.UnsupportedEncodingException exept)
		{
			System.out.println(exept.getMessage());
		}
		System.out.println(message);
	}
}
Dans l'énoncé il est dit que le message à transformé en nombre grâce à

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
String mess = "MESSAGE";
BigInteger intMess = new BigInteger(mess.getBytes("UTF-8"));
Je ne vois pas où se situe mon erreur...