Encryption RSA加密/解密

Encryption RSA加密/解密,encryption,rsa,cracking,Encryption,Rsa,Cracking,我正在做一些家庭作业来破解一个小的RSA密钥。我们得到以下信息: Public Key: {e=49, n=10539750919} Cipher Text: ITG!AAEXEX Ascii Table: AEGIORTX!0 1234567890 我被要求破解钥匙并找到纯文本 我想我找到了一个基本的算法。看起来如果我取p=Floor(Sqrt(n))=102663,那么我可以通过检查(n mod p==0)来尝试使用n=p*q找到一个q。一旦我们找到q,我就可以使

我正在做一些家庭作业来破解一个小的RSA密钥。我们得到以下信息:

Public Key: {e=49, n=10539750919}
Cipher Text: ITG!AAEXEX
Ascii Table: AEGIORTX!0
             1234567890
我被要求破解钥匙并找到纯文本

我想我找到了一个基本的算法。看起来如果我取p=Floor(Sqrt(n))=102663,那么我可以通过检查(n mod p==0)来尝试使用n=p*q找到一个q。一旦我们找到q,我就可以使用这个公式

d*e = 1 mod (p-1)(q-1)

找到d(私有指数)。在这之后,我有了破解钥匙所需要的一切!(我想)。我唯一不明白的是,上面的方程是如何计算的?1模(p-1)(q-1)不总是1吗?1模任何东西都是1,那么我做错了什么呢?

我想你误解了数学约定-
d*e=1模(p-1)(q-1)
等于说
(d*e)%((p-1)(q-1))=1
。不,“1 mod anything”并不总是1。它可以是-1(如果“anything”是负数,尽管在这方面有冲突的约定),或者不存在(如果“anything”是0)。噢,我忘了模数的约定是这样奇怪的。。谢谢lot@twalberg呃,模数的约定并不像这样奇怪,;但是,
%
是余数,而不是模数。把它看作余数是有帮助的,因为负值更符合余数的概念。@owlstead是的,我也许应该说“编程语言之间的冲突约定”,因为这就是我所想的。模的实际数学定义更精确一些……一般来说,
d
是通过应用扩展的欧几里德算法()来确定的,它允许您查找整数
x
y
,从而
ax+by=gcd(a,b)
(贝佐特恒等式)。由于
e
被选为
(p-1)(q-1)
的互质,我们知道
gcd(e,(p-1)(q-1))=1
,因此取
a=e
,和
b=(p-1)(q-1)
,运行该算法可以得到
x
,这是我们所需要的
d