如何使用BouncyCastle从字符串生成私钥

时间:2019-01-25 13:16:25

标签: java android bouncycastle

我有一个存储在变量中的字符串:

import Footer from 'Components/Footer';

我生成的公钥为:

-----BEGIN RSA PUBLIC KEY-----
MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
-----END RSA PUBLIC KEY-----

如何使用android中的充气城堡生成私钥

{编辑}

没有使用充气城堡,我正在生成这样的私钥:

public static PublicKey getFromString(String keystr) throws Exception
{
  //String S1= asciiToHex(keystr);
   byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr);
   ASN1InputStream in = new ASN1InputStream(keyBytes);
   DERObject obj = in.readObject();
   RSAPublicKeyStructure pStruct = RSAPublicKeyStructure.getInstance(obj);
   RSAPublicKeySpec spec = new RSAPublicKeySpec(pStrcut.getModulus(), pStruct.getPublicExponent());
   KeyFactory kf = KeyFactory.getInstance("RSA");
   return kf.generatePublic(spec);
}

我想使用Bouncy Castle实现相同效果

1 个答案:

答案 0 :(得分:0)

我对为什么您坚持使用bouncycastle感到有些困惑,但是如果您真的想使用bouncycastle,则CMS / PKIX库具有一个名为PEMParser的不错的帮助程序类,它将缩短所需的代码,例如:

public static PrivateKey getPemPrivateKey(String mKey) throws Exception {
    PEMParser pemParser = new PEMParser(new StringReader(mKey));
    final PEMKeyPair pemKeyPair = (PEMKeyPair) pemParser.readObject();
    final byte[] encoded = pemKeyPair.getPrivateKeyInfo().getEncoded();
    KeyFactory kf = KeyFactory.getInstance("RSA");
    return kf.generatePrivate(new PKCS8EncodedKeySpec(encoded));

}