栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从PEM BASE64编码的私钥文件中获取RSA私钥

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从PEM BASE64编码的私钥文件中获取RSA私钥

由于缺少ASN1支持,因此解析PKCS1(在Android上仅开箱即用的PKCS8格式)键是一项繁琐的任务,但如果包含Spongy castle jar以读取DER Integers,则可以解决。

String privKeyPEM = key.replace("-----BEGIN RSA PRIVATE KEY-----n", "")    .replace("-----END RSA PRIVATE KEY-----", "");// base64 depre the databyte[] enpredPrivateKey = base64.depre(privKeyPEM, base64.DEFAULT);try {    ASN1Sequence primitive = (ASN1Sequence) ASN1Sequence        .fromByteArray(enpredPrivateKey);    Enumeration<?> e = primitive.getObjects();    BigInteger v = ((DERInteger) e.nextElement()).getValue();    int version = v.intValue();    if (version != 0 && version != 1) {        throw new IllegalArgumentException("wrong version for RSA private key");    }        BigInteger modulus = ((DERInteger) e.nextElement()).getValue();    BigInteger publicExponent = ((DERInteger) e.nextElement()).getValue();    BigInteger privateExponent = ((DERInteger) e.nextElement()).getValue();    BigInteger prime1 = ((DERInteger) e.nextElement()).getValue();    BigInteger prime2 = ((DERInteger) e.nextElement()).getValue();    BigInteger exponent1 = ((DERInteger) e.nextElement()).getValue();    BigInteger exponent2 = ((DERInteger) e.nextElement()).getValue();    BigInteger coefficient = ((DERInteger) e.nextElement()).getValue();    RSAPrivateKeySpec spec = new RSAPrivateKeySpec(modulus, privateExponent);    KeyFactory kf = KeyFactory.getInstance("RSA");    PrivateKey pk = kf.generatePrivate(spec);} catch (IOException e2) {    throw new IllegalStateException();} catch (NoSuchAlgorithmException e) {    throw new IllegalStateException(e);} catch (InvalidKeySpecException e) {    throw new IllegalStateException(e);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号