1) 获得两个大质数,p和q
为了方便演示,底下使用了两个相对较小的数字,虽然这是不安全的。
为了得到随机的质数,我们首先使用一个随即的数字,然后逐步求得一个质数,开始:
p = 72) Let n = pq
q = 19
n = 7 * 193) Let m = (p - 1)(q - 1)
= 133
m = (7 - 1)(19 - 1)4) 找到一个小的数字e, e 与 m 互质
= 6 * 18
= 108
e = 2 => gcd(e, 108) = 2 (no)5) 找到一个数字 d, 使 d * e % m = 1
e = 3 => gcd(e, 108) = 3 (no)
e = 4 => gcd(e, 108) = 4 (no)
e = 5 => gcd(e, 108) = 1 (yes!)
n = 0 => d = 1 / 5 (no)如果处理一个大的数字,我们必须使用一个叫做欧几里德的算法。
n = 1 => d = 109 / 5 (no)
n = 2 => d = 217 / 5 (no)
n = 3 => d = 325 / 5
= 65 (yes!)
n = 133
e = 5
n = 133
d = 65
C = Pe % n解密
= 65 % 133
= 7776 % 133
= 62
P = Cd % nWe now repeat the sequence of operations that reduced 6265 to 12032 to reduce the exponent down to 1.
= 6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133
= 62 * (3844 % 133)32 % 133
= 62 * 12032 % 133
= 62 * 3616 % 133现在,明文跟原来的匹配,因此,算法正确。
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852 % 133
= 62 * 43 % 133
= 2666 % 133
= 6