回答
作为对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