How to find d, given p, q, and e in RSA?

前端 未结 5 828
滥情空心
滥情空心 2021-02-07 07:05

I know I need to use the extended euclidean algorithm, but I\'m not sure exactly what calculations I need to do. I have huge numbers. Thanks

5条回答
  •  灰色年华
    2021-02-07 07:40

    The approved answer by Thilo is incorrect as it uses Euler's totient function instead of Carmichael's totient function to find d. While the original method of RSA key generation uses Euler's function, d is typically derived using Carmichael's function instead for reasons I won't get into. The math needed to find the private exponent d given p q and e without any fancy notation would be as follows:

    d = e^-1*mod(((p-1)/GCD(p-1,q-1))(q-1))

    Why is this? Because d is defined in the relationship

    de = 1*mod(λ(n))

    Where λ(n) is Carmichael's function which is

    λ(n)=lcm(p-1,q-1)

    Which can be expanded to

    λ(n)=((p-1)/GCD(p-1,q-1))(q-1)

    So inserting this into the original expression that defines d we get

    de = 1*mod(((p-1)/GCD(p-1,q-1))(q-1))

    And just rearrange that to the final formula

    d = e^-1*mod(((p-1)/GCD(p-1,q-1))(q-1))

    More related information can be found here.

提交回复
热议问题