2016-04-26 127 views
1

我有一個模數和私人指數。我如何從JavaScript生成一個JavaScript的RSA私鑰?從模數和私人指數在JavaScript中的RSA私鑰

或者如果這些值不足以生成RSA私鑰。我可能需要什麼其他價值。

RSAPrivateKeySpec在Java 7中能夠生成帶有mod和私有Exp的RSA私鑰。我正在尋找JavaScript中的等價物。

我也試過npm ursa模塊,很不幸沒有解決。

+0

[如何計算公共和私人指數的RSA模數?](http://stackoverflow.com/questions/5747013/how-to-factor-rsa-modulus -given-the-public-and-private-exponent) –

回答

2

JSBN能夠創建可解密的RSA私鑰。

var sk = new RSAKey(); 
sk.setPrivate("<modulus hex>", "<public exponent hex>", "<private exponent hex>"); 
var plaintext = sk.decrypt("<ciphertext hex>"); 

公用指數不解密期間使用,所以你可以簡單地傳遞一些垃圾十六進制到它,但它不是「03」(3),「11」(17)或「010001」(65537) 。

您需要包含jsbn.js,jsbn2.js,rsa.js和rsa2.js.請記住,解密將比完整RSA密鑰慢4倍,因爲中國剩餘定理不能使用。

+0

謝謝Artjon。但是有沒有一種方法可以獲得完整的私鑰?也許PEM文件或私鑰組件的其餘部分 – WiseWins

+0

它看起來並不像JSBN能夠讀取或寫入PEM編碼的密鑰,但您可以自己編寫解碼器/編碼器。關鍵組件始終可用:[代碼](https://github.com/jasondavies/jsbn/blob/v1.4/rsa.js#L63-L73) –

1

模數和私人指數,在技術上,足以產生一個RSA私鑰,抽象;它們僅僅不足以生成RSA私鑰,其輸入用於使用Chinese remainder theorem優化解密。 (As Artjom B.'s answer notes,一些實現能夠執行這個非優化解密;但是,有些則不是)

創建 RSA私鑰,其輸入,用於優化,你需要原來的素數pq。有沒有簡單,確定性方式來從模數和私人指數獲得這些,但方法存在搜索他們在一個足夠小的空間處理。看到這個問題的答案:Calculate primes p and q from private exponent (d), public exponent (e) and the modulus (n)

+0

關於保留模數的好建議,但我沒有看看問題是如何重複的。 –