首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从base64编码的字符串构造java.security.PublicKey对象?

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

Stack Overflow用户
提问于 2012-06-05 23:56:19
回答 5查看 40.2K关注 0票数 40

我有一个来自外部来源(安卓商店)的bse64encoded字符串公钥,我需要用它来验证签名的内容。如何将字符串转换为java.security.PublicKey接口的实例。我使用的是Java6,如果这有什么不同的话。

密钥(可能)是使用标准java库生成的,而不是bouncy castle (它来自一个远程团队,所以我不确定)。他们的示例代码说要使用Security.generatePublicKey(base64EncodedPublicKey);,但标准java中的Security对象没有这样的方法。

EN

回答 5

Stack Overflow用户

发布于 2014-07-01 11:59:15

上述答案的代码

代码语言:javascript
复制
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;
}
票数 69
EN

Stack Overflow用户

发布于 2017-05-26 22:52:22

试试这个..。

代码语言:javascript
复制
PublicKey getPublicKey(byte[] encodedKey) throws NoSuchAlgorithmException, InvalidKeySpecException
{
    KeyFactory factory = KeyFactory.getInstance("RSA");
    X509EncodedKeySpec encodedKeySpec = new X509EncodedKeySpec(encodedKey);
    return factory.generatePublic(encodedKeySpec);
}
票数 2
EN

Stack Overflow用户

发布于 2018-06-21 18:04:04

使用海绵城堡

代码语言:javascript
复制
public static PublicKey getPublicKeyFromString(String key) throws Exception {
    KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
    org.spongycastle.asn1.pkcs.RSAPublicKey pkcs1PublicKey
            = org.spongycastle.asn1.pkcs.RSAPublicKey.getInstance(decodeB64(key));
    RSAPublicKeySpec keySpec
            = new RSAPublicKeySpec(pkcs1PublicKey.getModulus(), pkcs1PublicKey.getPublicExponent());
    PublicKey publicKey = keyFactory.generatePublic(keySpec);
    return publicKey;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10900643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档