android 公钥pem编码,在Android中将PEM转换为PublicKey

我已经看到了许多类似的问题,但对我而言,没有任何效果。我只是想将从服务器检索到的PEM格式的RSA公钥转换为PublicKeyAndroid中的。谁能指出我正确的方向?

编辑:我已经成功使用以下代码将PEM转换为PublicKey,但是在编码消息后,我得到了意外的输出…

public PublicKey getFromString(String keystr) throws Exception

{

// Remove the first and last lines

String pubKeyPEM = keystr.replace("-----BEGIN PUBLIC KEY-----\n", "");

pubKeyPEM = pubKeyPEM.replace("-----END PUBLIC KEY-----", "");

// Base64 decode the data

byte [] encoded = Base64.decode(pubKeyPEM);

X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encoded);

KeyFactory kf = KeyFactory.getInstance("RSA");

PublicKey pubkey = kf.generatePublic(keySpec);

return pubkey;

}

public String RSAEncrypt(final String plain) throws NoSuchAlgorithmException, NoSuchPaddingException,

InvalidKeyException, IllegalBlockSizeException, BadPaddingException, IOException {

if (pubKey!=null) {

cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.ENCRYPT_MODE, pubKey);

encryptedBytes = cipher.doFinal(plain.getBytes());

Log.d("BYTES", new String(encryptedBytes));

return Hex.encodeHexString(encryptedBytes);

}

else

return null;

}

输出如下所示:

b6813f8791d67c0fa82890d005c8ff554b57143b752b34784ad271ec01bfaa9a6a31e7ae08444baef1585a6f78f3f848eecb1706bf7b2868fccefc9d728c30480f3aabc9ac5c3a9b4b3c74c2f7d6f0da235234953ea24b644112e04a2ec619f6bf95306ef30563c4608ec4b53ed7c15736d5f79c7fa1e35f2444beb366ae4c71

当我期望更接近:

JfoSJGo1qELUbpzH8d4QXtafup+J2F9wLxHCop00BQ4YS0cRdRCKDfHpFPZQYjNeyQj00HwHbz+vj8haTPbpdqT94AHAl+VZ+TPAiUw1U5EXLLyy4tzbmfVI7CwvMm26lwB4REzYUZdedha1caxMEfxQ5duB+x4ol9eRZM/savg=

我缺少某些格式或文件类型吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值