从字节数组创建PrivateKey

Vuk*_*Vuk 7 java cryptography javacard

有没有办法从字节数组生成PrivateKey?我使用getEncoded()方法得到了这个字节数组,但现在我必须将它转换回PrivateKey.

谢谢,Vuk

mar*_*ica 6

我也在寻找这个答案,终于找到了答案.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);
Run Code Online (Sandbox Code Playgroud)

我从来没有为JavaCard做过任何事情,但从这篇文章来看,看起来你可以使用KeyFactory类.您可能需要下载BouncyCastle库.


Pat*_*ick 5

正如Java文档中所述

密钥通常通过密钥生成器,证书或用于管理密钥的各种Identity类获得.还可以通过使用密钥工厂从关键规范(基础密钥材料的透明表示)获得密钥.

的KeyFactory类可以帮你出这一点.