- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有公钥字符串
String publicK = "-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgFhTDtuYJ5G5LEHMesnf\n" +
"wX9cXZ1b/ozkkpbgtC3ziETiFkOFncbPCskpdbPmXxXv3vrwJ2RQIL2LZLZPe1xT\n" +
"AyQY1DdD8hGqIemMwV2NqfFoEomVL5+QOAKCRiHkGgte6a2+OoTk9JzRP/NVaPkB\n" +
"sdX1/nIPERYen3uDvUSYq83Ite2oDyaZZxj+/r46SadS/g5jWmeqgVoInJw813y7\n" +
"Ee2HgYVbnktlLNhqIGj+1OKmwop+GP7Kk5CAkt9fo4VjRRllDaX1yFCZEbDL254n\n" +
"S+LVOhl4mLBM8764+YVxjyYRC1Nq2rNZfQ602652i+l8u8nGqdiKOKDpjNDvhONP\n" +
"yQIDAQAB\n" +
"-----END PUBLIC KEY-----";
我想转换 PublicKey 对象。
byte[] byteKey = publicK.getBytes();
X509EncodedKeySpec spec = new X509EncodedKeySpec(byteKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePublic(spec);
以上代码抛出异常
java.security.InvalidKeyException: invalid key format
at sun.security.x509.X509Key.decode(X509Key.java:387)
at sun.security.x509.X509Key.decode(X509Key.java:403)
at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:84)
at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:298)
at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:201)
最佳答案
您的 key 是 base64 编码的 PEM 格式。您必须先删除字符串,然后对其进行解码,然后才能使用 keyfactory。
String publicK = "-----BEGIN PUBLIC KEY-----\n"
+ "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgFhTDtuYJ5G5LEHMesnf\n"
+ "wX9cXZ1b/ozkkpbgtC3ziETiFkOFncbPCskpdbPmXxXv3vrwJ2RQIL2LZLZPe1xT\n"
+ "AyQY1DdD8hGqIemMwV2NqfFoEomVL5+QOAKCRiHkGgte6a2+OoTk9JzRP/NVaPkB\n"
+ "sdX1/nIPERYen3uDvUSYq83Ite2oDyaZZxj+/r46SadS/g5jWmeqgVoInJw813y7\n"
+ "Ee2HgYVbnktlLNhqIGj+1OKmwop+GP7Kk5CAkt9fo4VjRRllDaX1yFCZEbDL254n\n"
+ "S+LVOhl4mLBM8764+YVxjyYRC1Nq2rNZfQ602652i+l8u8nGqdiKOKDpjNDvhONP\n" + "yQIDAQAB\n"
+ "-----END PUBLIC KEY-----";
String pubKeyPEM = publicK.replace("-----BEGIN PUBLIC KEY-----\n", "").replace("-----END PUBLIC KEY-----", "");
// Base64 decode the data
byte[] encodedPublicKey = Base64.decode(pubKeyPEM);
X509EncodedKeySpec spec = new X509EncodedKeySpec(encodedPublicKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
System.out.println(kf.generatePublic(spec));
关于java - 如何从 String Java 生成 PublicKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45754277/
我只有一个PublicKey字符串,如何获取PublicKey指纹?我有一些想法形式 https://go-review.googlesource.com/c/crypto/+/32814 , 但我不
在使用 secp256k1 曲线执行椭圆曲线加密时,我注意到虽然代码和测试用例在 Android Studio IDE 上编译,但它们不会在 android 设备上编译,因为曲线未在移动设备使用的 j
我有一个 rsa.PublicKey,它由结构中的模数和公共(public)指数组成。我想验证用该 key 签名的 ssh.Signature,我想如果我有 ssh.PublicKey 我可以调用 V
我正在尝试将 PublicKey 转换为 String,但我不知道如何正确地进行。以下代码没有给我正确的 key ,那么如何转换呢? byte[] publicKeyBytes = userKeys.
我注意到核心 .NET 程序集具有 PublicKey = 00000000000000000400000000000000。不仅比 sn.exe 允许生成的那些更短(最少 384 位),而且它还有很
我已经使用命令 ssh keygen 创建了 ssh key 并且我已将公钥添加到我的 bitbucket 帐户,然后我也将 key 添加到了 ssh 代理,但是当我尝试使用 sourceTree 从
我尝试将现有项目从 github 存储库导入 aptana studio,但出现错误,提示权限被拒绝(公钥)。 fatal:远端意外挂断 我确保将 ssh 添加到我在 github 中的帐户。我还运行
我正在尝试以这种方式从字符串创建公钥: byte[] keyBytes = Base64.decode(publicKeyStr.getBytes("utf-8"), Base64.DEFAULT);
在 LDAP 服务器中,我以字符串格式存储了我的公钥。我必须比较从 LDAP 服务器检索到的值和用户证书的公钥。 我正在从 LDAP 检索字符串格式的“公钥”。通过以下方法,我得到了公钥格式的输出。
我正在使用 C# ECDiffieHellmanCng 类并使用 sample 中的代码发现了一个(在我看来很奇怪的)行为:任何项目中生成的每个公钥都是一样的!这是正确的行为吗? 例子: using
我正在使用 crypto lib ,遇到了一个问题:我需要将 PublicKey 类型转换为 byte[],因为它可以用私钥完成: privkey.D.Bytes() 我该如何解决这个问题? 最佳答案
我正在尝试创建一个将加密用户消息的应用程序。用户公钥需要作为字符串发布到服务器。我正在像这样生成 Android KyeStore PublicKey: public static Publi
我调用返回 2 个公钥(作为字符串)的 API,每个公钥由 512 位组成: 588506d0c604d8270ac4de9fdc520abe4779128ff5b7940d38fcd13d5e5fd
如果创建了一个新的 ssh key ,请将公钥复制并粘贴到 gitlab 项目,并在 ~/.ssh 中创建一个 conifg 文件... 我仍然无法克隆该项目(我不是所有者,但我被添加为用户) 这就是
我已经在 github 上为我的机器注册了 ssh key ,并通过键入 ssh git@github.com 验证它是否有效。接收认证成功的响应。 但是,当我尝试将机器上的源代码推送到我的 git
在尝试将 byte[] 数组转换为 PublicKey 时出现错误: Exception in thread "main" java.security.spec.InvalidKeySpecExcep
我想从 OpenSSL 获得与 Java PublicKey.getEncoded() 相同的 ASN.1 输出。我使用 EC,曲线类型是 prime256v1。这是我的 OpenSSL 代码: EC
我不想生成新的公钥,有人向我发送他的公钥(类型 PublicKey.sql),然后我将使用此 key 加密一些文本并将其保存在 Oracle DataBase 中。 我找到了一种读取公钥的方法,但我收
我使用以下代码将公钥和私钥转换为字符串 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); keyPairGen.in
我尝试使用 git 简化我的工作,然后我尝试使用 git pull 我得到“权限被拒绝(公钥),我通过两个命令解决这个问题: 1. ssh-agent /bin/bash 2. ssh-add /ro
我是一名优秀的程序员,十分优秀!