Hallo,
voor school probeer ik in C# een simpel RSA programmaatje te maken waarmee ik zinnen kan versleutelen en ontsleutelen. Het probleem is alleen dat als ik blokken van 2 letters ipv. 1 letter gebruik en die vercijfer dan gaat het ergens fout. Dit kan bij het versleutelen of ontsleutelen zijn.Volgens mij gaat het fout bij of het modulair machtsverheffen of bij het vinden van de inverse.
Hierbij de relevante stukken code:
Kan iemand mij helpen om te vinden waar het fout gaat? Alvast bedankt!
voor school probeer ik in C# een simpel RSA programmaatje te maken waarmee ik zinnen kan versleutelen en ontsleutelen. Het probleem is alleen dat als ik blokken van 2 letters ipv. 1 letter gebruik en die vercijfer dan gaat het ergens fout. Dit kan bij het versleutelen of ontsleutelen zijn.Volgens mij gaat het fout bij of het modulair machtsverheffen of bij het vinden van de inverse.
Hierbij de relevante stukken code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
| public static int PowMod(int A, int B, int Mod) { int x = 0, y; y = (A * A) % Mod; for (int i = 1; i < B-1; i++) { x = (y*A) % Mod; y = x; } return x; } |
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public static long GetInverseMod(long A, long p) { long a, b, q, t, x, y; a = p; b = A; x = 1; y = 0; while (b != 0) { t = b; q = a / t; b = a - q * t; a = t; t = x; x = y - q * t; y = t; } return (y < 0) ? y + p : y; } |
Kan iemand mij helpen om te vinden waar het fout gaat? Alvast bedankt!