【发布时间】:2017-02-18 23:02:05
【问题描述】:
我正在为一个执行简单 RSA 加密和解密的类编写程序。程序运行一个实例时产生的数字如下:
encryption:
p = 37
q = 11
n = 407
phi = 360
e = 17
d = 24
Enter the message you wish to encrypt: hello
ASCII: 104
ASCII: 101
ASCII: 108
ASCII: 108
ASCII: 111
Here is your encrypted message:
:Žřřo
decryption:
Enter in a value for n:407
Enter in a value for d:24
Enter the message you wish to decrypt::Žřřo
ASCII: 158
ASCII: 223
ASCII: 47
ASCII: 47
ASCII: 111
Here is your decrypted message:
ß//o
我的问题是,为什么解密后不能返回正确的 ASCII 值?满足 RSA 的所有规则:
1. p 和 q 是独立的素数
2. e 和 phi 互质
3. d 是 e 的模乘逆,使得 e * d mod n = 1
程序随机生成 p、q 和 e,并在每次运行时计算 n、phi 和 d。其他示例也类似,符合所有 RSA 规则但仍无法正确解密。
【问题讨论】: