Java 解释tpm工具tpm_getpubek输出
tpm_getpubek的输出形式如下: 1) 我很难理解如何使用它。我试图通过以下代码将其转换为java公钥对象:Java 解释tpm工具tpm_getpubek输出,java,tpm,Java,Tpm,tpm_getpubek的输出形式如下: 1) 我很难理解如何使用它。我试图通过以下代码将其转换为java公钥对象: byte[] derPublicKey = DatatypeConverter.parseHexBinary(keyBloc); X509EncodedKeySpec x509publicKey = new X509EncodedKeySpec(derPublicKey); KeyFactory factory = KeyFactory.getInstance("RSA");
byte[] derPublicKey = DatatypeConverter.parseHexBinary(keyBloc);
X509EncodedKeySpec x509publicKey = new X509EncodedKeySpec(derPublicKey);
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey publicKey = factory.generatePublic(x509publicKey);
但这将返回以下错误:
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:205)
[java] at java.security.KeyFactory.generatePublic(KeyFactory.java:334)
tpm_getpubek
以原始形式返回十六进制编码的公钥模数,而不是X509编码的blob。假设您将返回的数据保存到名为keyBlock
(删除空格)的字符串中,您将生成如下公钥:
PublicKey pk = KeyFactory.getInstance("RSA").generatePublic(
new RSAPublicKeySpec(new BigInteger(keyBlock, 16), new BigInteger("65537")));
PublicKey pk = KeyFactory.getInstance("RSA").generatePublic(
new RSAPublicKeySpec(new BigInteger(keyBlock, 16), new BigInteger("65537")));