RSA解密方法

时间:2014-09-12 07:22:37

标签: encryption cryptography rsa

我还没有学习密码学,而且这种练习 - 以作为家庭作业的形式提供,更多的是阅读复合功能等的练习。无论哪种方式,我都看了一下源代码的某些部分并且不明白这一点。

对于RSA加密,源代码以这样的方式操纵字符串:

  • 正在将消息散列为整数列表。 (int1,int2,int3 ......)
  • 加密int1
  • 从int2(int2 - e(int1))
  • 中减去结果
  • 使用模数键(n)模数
  • 使用密钥进行RSA转换。

然而,RSA解密方法是通过以下方式完成的:

  • 1)RSA_transform
  • 2)添加结果
  • 3)modulo with n

令我困惑的关于RSA解密的部分是在添加和rsa_transform之后需要模数。如果需要,它是否应该按照RSA加密中如何执行操作链的相反顺序使用?

此外,源代码中提供了“invert_modulo”。我原本认为这是解密邮件的关键,但事实并非如此。什么可以“invert_modulo”用于?

1 个答案:

答案 0 :(得分:0)

我无法理解你问题的第一部分,因为散列字符串的步骤不明确,我也没有获得加密步骤的第3部分。至于第二个问题,invert_modulo是"模块化多重反转"。

在使用模块化airthmetic时,我们总是希望我们的答案在整数范围0到M-1(其中M是我们模数的数字),简单的操作,如加法,乘法和减法都很容易执行:像(a + b)MOD M,它适用于模块化airthmetic的约束。

我们试图划分问题:(a / b)MOD M

如你所见,a / b可能并不总是给出一个整数,因此(a / b)不在0到M-1的整数范围内。所以为了克服这一点,我们试图找到b的倒数,我们宁愿将a乘以,即:(a * b_inverse)MOD M.

b_inverse可以定义为:(b * b_inverse)MOD M = 1。

,即b_inverse是0到M-1范围内的数字,当乘以b时,模数M得1。

注意:还要注意某些数字的模数倒数可能不存在我们可以通过取G的GCD和相关数字来检查(在我们的例子中#34; b")如果GCD不等于1模块化逆不存在。