如何从 base64 编码字符串构造 java.security.PublicKey 对象?

2022-09-01 02:19:41

我有一个来自外部源(Android商店)的bse64编码字符串公钥,我需要使用它来验证签名内容。如何将字符串转换为java.security.PublicKey接口的实例。我正在使用Java 6,如果这有所作为的话。

关键是(可能)使用标准的java lib而不是充气城堡(它来自远程团队,所以我不确定)生成。他们的示例代码说使用Security.generatePublicKey(base64EncodedPublicKey);但是标准java中的安全对象没有这样的方法。


答案 1

上述答案的代码

public static PublicKey getKey(String key){
    try{
        byte[] byteKey = Base64.decode(key.getBytes(), Base64.DEFAULT);
        X509EncodedKeySpec X509publicKey = new X509EncodedKeySpec(byteKey);
        KeyFactory kf = KeyFactory.getInstance("RSA");

        return kf.generatePublic(X509publicKey);
    }
    catch(Exception e){
        e.printStackTrace();
    }

    return null;
}

答案 2

好吧,咧嘴笑...试试这个

  • base64 解码关键数据以获得字节数组 (byte[])
  • 使用字节数组创建新的 X509编码密钥规范
  • 使用 KeyFactory.getInstance(“RSA”) 获取 KeyFactory 的实例,此处假设 RSA
  • 调用方法 generatePublic(KeySpec) 与 X509EncodedKeySpec
  • 结果 /should/ 是您使用的公钥。