【发布时间】:2015-07-08 11:54:45
【问题描述】:
我的 JKS(Java 密钥存储)文件中有一个对称密钥,我想用一个对称密钥包装我的私钥。
我再次使用 WrappedBytes 到 PrivateKey 对象。最后我想要 KeyPair 对象。
以下代码给出以下错误消息:
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : DerInputStream.getLength(): lengthTag=125, 太大。**
public KeyPair wrapPrivateKeyWithSymmetricKey(KeyPair keyPair) {
try {
PrivateKey priv = keyPair.getPrivate();
SecretKey symmetricKey = "bjksabfkasdbgvkasbvkkj";//symmetricKey from jks file
//wrapping Private Key
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.WRAP_MODE, symmetricKey);
byte[] wrappedKey = cipher.wrap(priv);
//wrappedKey bytes to PrivateKey Object
KeyFactory keyFactory = KeyFactory.getInstance(priv.getAlgorithm());
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(wrappedKey);
PrivateKey privateKey2 = keyFactory.generatePrivate(privateKeySpec); //above Error Throwing in this line
return new KeyPair(keyPair.getPublic(), privateKey2);;
}
我该如何解决这个问题?
【问题讨论】:
-
欢迎来到信息安全堆栈交换!我认为这个问题更适合Stack Overflow。您可以标记您的帖子以引起版主的注意并要求迁移。为了清楚起见,您可能希望显示
catch语句中的内容。此外,它有助于显示错误发生在哪一行 - 您可以在异常附带的堆栈跟踪中找到它。祝你好运!
标签: java cryptography