RSA密鑰由公共密鑰(指數e和模數N)和私鑰(指數d和模數N)
在這個普通的版本,它是相同的,如果你想計算與公共或其他私鑰約爲...幾乎不可能
...然而...
如果你碰巧有一個私人密鑰包含更多的性能價值(例如像d,dQ,dP,P,Q,N),那麼你就可以擁有一切你需要計算的公開指數:
calculate phi_n作爲(P-1)*(Q-1)
運行擴展歐幾里德算法來計算d mod phi_n的乘法逆...這是您的公開指數...因爲N已知(P * Q)你的公鑰
EDIT(更精確地說):
存在指數e和d之間不存在數學上的差異......一個是其他乘法的逆...
以最簡單的方式你可以看看RSA,密鑰對的一個密鑰不過是一個指數和一個通用模數...實際上,當你創建密鑰對並計算值e和d,您可以交換他們對對方,一切都將仍然工作
來計算你需要的模乘法模逆...現在來有問題的部分:有兩個
一個模數是N ......這是兩個鍵的共同模數......這個數值並不是祕密,因爲它是公鑰的一部分
第二個模量是N(eulers phi函數)的phi ...這個值是一個祕密......每個擁有這個值的人,都可以計算出逆密鑰...在RSA的情況下phi(n)是(P -1)*(Q-1)
P和Q是RSA中使用的兩個大素數......N = P * Q
現在您可以看到,要計算給定鍵的其他鍵,您需要知道phi(n)...唯一已知的獲得phi(N)的方法是eulers phi函數,爲此,你需要N的因素......因爲N是兩個大素數的乘積,則需要這兩個素數...所以要麼你有一個包含P和Q(實際上他們中的一個會的關鍵足夠了,因爲你可以devide N到拿到其他...),或者你將有N因子自己......
分解即只包括兩個大素因子大量是需要時間的任務......這就是RSA的安全性......誰曾經能做到這一點,可以打破RSA密鑰
所以要回到你的具體問題:
它不要緊,如果你想計算E通過D或D通過E ...數學問題是一樣的......你可以解決這個問題IF,AND ONLY IF你至少有一個共同模數係數N
http://stackoverflow.com/questions/5244129/openssl-use-rsa-private-key-to-generate-public-key – Flexo
它似乎是相關的但實際上這個帖子沒有我的問題的答案 –
是的,這是可能的(正如那個鏈接的問題建議)。但是,除非你正在用特定的語言來實現這個問題,否則這個問題是脫離主題的? –