如何从p,q,d获取公共rsa密钥

时间:2017-09-22 17:32:26

标签: key rsa

我只有这个,我不知道如何计算私钥。

const char* p("11255972776556904264355589361581299560395728872239621233068906405812608921813191755808405540044481084831045609458696035640942585319975255128754117171584651");
const char* q("7289733069892282545374975427138985921459336460098199998353496532104650473441707994051054607475682163000818993472760435603314465037312588601022012551228891");
const char* d("70043748630820478511883011265666731045146072028066310178672809101054479215166107831769673593025767853213311605740951029471462199049707526773053884221428550051565790192707552723439555048621215503776643878462109243202624983405481154406252935541613799894609964410988575108271598180781588706290307870314111895973");

1 个答案:

答案 0 :(得分:0)

  

我只有这个,我不知道如何计算私钥。

您已经知道私钥:在使用RSA谈论pqd时,pq是素数,{ {1}}是私钥。

所以,你唯一不知道的是公钥。它是d(p*q, e)是公共指数。对于许多RSA库,e为3或65537.很容易看出您没有为e选择其中一个值:如果您选择了这两个值中的一个,则e 1}}或(3*d-1) / ((p-1)(q-1))将是一个整数。我用这个online big number calculator计算了这两个公式,它们没有给出整数。因此,您没有为(65537*d-1) / ((p-1)(q-1))选择一个常用值。

因此,您需要自己使用extended euclidean algorithmee作为输入来计算(p-1)(q-1)d的Bézout系数值为d。以下是使用C,C#和Python的此算法的示例实现,但不适用于大数字:implementating the extended euclidean algorithm