无法获得RSA加密背后的数学工作

时间:2013-10-18 16:32:08

标签: math encryption rsa

我将在下周接受测试,并且我正在运行一些带素数的基本示例。书中的例子似乎没有遇到这个问题

第一步 - 选择两个素数(我选择了p = 3,q = 7)

第二步 - 计算n = pq = 21

第三步 - 计算总数(n)= tot(p)* tot(q)= 2 * 6 = 12

第四步 - 选择e使得1< e< tot(n)使得gcd(e,tot(n))= 1(互质)。我选择了e = 5.

第五步 - 选择d使得d * e%tot(n)= 1。

根据我的理解,d必须是整数。这是错误的结论吗?或者5对于这种情况不是有效的e?

2 个答案:

答案 0 :(得分:1)

是的,它必须是整数。第五步寻找的是modular multiplicative inverse。基本上,d是一个整数,d*e = m*tot(n) + 1对于某个整数m,换句话说,d*etot(n)的倍数的一倍。只要etot(n)是互质的,e就会有反转 - 就您的示例而言,d恰好是5:d*e = 5*5 = 25 = 2*tot(n) + 1

答案 1 :(得分:1)

是的, d 是一个整数,按 e 的模数倒数计算。这是一个计算数 x 的倒数的函数,关于模数 m

function inverse(x, m)
    a, b, u := 0, m, 1
    while x > 0
        q := b // m
        x, a, b, u := b % x, u, x, a - q * u
    if b == 1 return a % m
    error "must be coprime"

如果您想了解更多信息,我会在my blog处进行RSA计算示例。