Encryption 为什么解密数据时得到的值与加密数据不同?

Encryption 为什么解密数据时得到的值与加密数据不同?,encryption,rsa,Encryption,Rsa,在本学期学习计算机安全时,我们正在复习密码系统。我想更新一下RSA的知识,所以回顾了我离散数学书中的内容。但我想我犯了一个错误 对于我的纯文本,我使用我的名字: Darryl = 68 01 18 18 25 12 对于我的素数,我选择了: p=23 and q=11, so n=23*11=253. n的总和为: (p-1)(q-1) = 22*10 = 220. 我选择了e=9和d=49,因为9*49=441与1 mod 220一致 加密我获得的姓名的每个字节: 68^9 mod 22

在本学期学习计算机安全时,我们正在复习密码系统。我想更新一下RSA的知识,所以回顾了我离散数学书中的内容。但我想我犯了一个错误

对于我的纯文本,我使用我的名字:

Darryl = 68 01 18 18 25 12
对于我的素数,我选择了:

p=23 and q=11, so n=23*11=253.
n的总和为:

(p-1)(q-1) = 22*10 = 220.
我选择了
e=9
d=49
,因为
9*49=441
1 mod 220
一致

加密我获得的姓名的每个字节:

68^9 mod 220 = 28
1^9 mod 220 = 1
18^9 mod 220 = 8
18^9 mod 220 = 8
25^9 mod 220 = 125
12^9 mod 220 = 12
但是解密我得到:

28^49 mod 220 = 68
1^49 mod 220 = 1
8^49 mod 220 = 128  <--- these are wrong
8^49 mod 220 = 128
125^49 mod 220 = 25
12^49 mod 220 = 12
28^49模块220=68
1^49模220=1

8^49 mod 220=128加密是
x^e mod n
,解密是
x^d mod n
。您的
n
253
,但您使用的是
220


这就给出了
18^9 mod 253=173
。解密给出的
173^49 mod 253
18

计算
d
发生模φ(220),加密/解密应该发生模φ而不是模φ;i、 因为它总是c^e mod n,其中c=要加密的字节,所以它总是将1加密为1。你是对的,我没有意识到我使用的不是n而是toClient(n)。非常感谢。