回答
作爲對Java docs
鍵表示通常通過密鑰生成器,證書或用於管理鍵的各種身份類獲得。密鑰也可以通過使用密鑰工廠從關鍵規範(基礎密鑰材料的透明表示)中獲得。
KeyFactory類可以幫助你解決這個問題。
我忘了說我正在使用javacard,它不支持KeyFactory類。它支持keyBuilder,但我無法真正弄清楚如何使用這個類來滿足我的需要。 – Vuk 2011-01-05 02:23:17
丟棄編碼的字節數組。在JavaCard上,AFAIR無法直接對其進行解碼 - 您必須分別設置不同的關鍵組件。
例如一個RSAPrivateKey需要與指數和彈性模量進行初始化:
rsaPrivate = (RSAPrivateKey) javacard.security.KeyBuilder.buildKey
(javacard.security.KeyBuilder.TYPE_RSA_PRIVATE,
javacard.security.KeyBuilder.LENGTH_RSA_512, false);
byte[] exponent = {(byte) 7};
byte[] modulus = {(byte) 33};
rsaPrivate.setExponent(exponent, (short) 0, (short) exponent.length);
rsaPrivate.setModulus(modulus, (short) 0, (short) modulus.length);
BTW:對於JavaCard的問題,我建議在Oracle論壇JavaCard Forum。如果您在那裏搜索RSAPrivateKey,您會發現一些有趣的帖子。
我也在尋找這個答案,並最終找到它。 keyBytes是最初使用getEncoded()創建的字節數組。
//add BouncyCastle as a provider if you want
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
//create a keyfactory - use whichever algorithm and provider
KeyFactory kf = KeyFactory.getInstance("DSA", "BC");
//for private keys use PKCS8EncodedKeySpec; for public keys use X509EncodedKeySpec
PKCS8EncodedKeySpec ks = new PKCS8EncodedKeySpec(keyBytes);
PrivateKey pk = kf.generatePrivate(ks);
我從來沒有做過任何的JavaCard的,但是從這個post,它看起來像你可以使用的KeyFactory類。您可能需要下載BouncyCastle庫。
要麼你必須自己解碼PKCS#8編碼的blob(ASN.1 BER解析)並設置組件,或者可以從私鑰(至少私有指數和模數)中獲取組件作爲Java BigIntegers ,將它們轉換爲無符號字節數組,並按照Robert的說明將它們設置在Java Card API中。可以在Java Card上完成PKCS#8解析,但這是一個非常可怕的練習。
- 1. 從base64字符串創建私鑰ECDSA私鑰
- 2. 創建公鑰和私鑰
- 3. 創建從字節數組,得到這樣的字節數組
- 4. 從字節創建3DES密鑰
- 5. 提取私鑰字節
- 6. 如何從字節數組創建XpsDocument?
- 7. 如何從HttpPostedFile創建字節數組
- 8. 如何從字節數組創建System.Windows.Media.ImageSource?
- 9. 從字節數組創建BitmapImage
- 10. 創建從一個字節數組WPF
- 11. 從C++的字節數組創建HICON?
- 12. 從字節數組創建文件
- 13. 從字節數組創建一個CGPDFDocument
- 14. c#從字節數組創建xml
- 15. 從字節數組創建typeFace
- 16. 從字節數組創建BufferedImage java
- 17. OpenSSL不會創建私鑰?
- 18. Bouncy Castle ESCDA從私鑰中創建公鑰
- 19. 從創建的ssh密鑰中檢查我的私鑰
- 20. 從私鑰和公鑰創建密鑰庫
- 21. 將私鑰作爲字節數組導出的最佳方式
- 22. 如何將字節數組轉換爲DSA私鑰?
- 23. 壓縮私鑰以適應固定大小的字節數組
- 24. 使用RSA私鑰創建密鑰庫
- 25. 創建公鑰和私鑰的Gem?
- 26. 創建從字節
- 27. 使用pycrypto從私鑰創建openssh公鑰
- 28. 使用ssh從私鑰創建發佈密鑰
- 29. 從私鑰和CA證書包創建java密鑰庫
- 30. 創建私有節點
這應該有幫助嗎? http://forums.oracle.com/forums/thread.jspa?threadID=1525932&tstart=105 – 2011-01-05 01:38:19
不,這沒有幫助,但無論如何感謝 – Vuk 2011-01-05 02:09:57