java异常标记_java.lang.RuntimeException:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标记...
我收到此錯(cuò)誤(在標(biāo)題中).我不確定為什么,請(qǐng)幫忙.代碼如下:
public static String decryptRSA(Context mContext, byte[] message) throws Exception {
InputStream in = mContext.getResources().openRawResource(R.raw.publicrsakey);
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(org.apache.commons.io.IOUtils.toByteArray(in));
PublicKey publicKey =
KeyFactory.getInstance("RSA").generatePublic(x509EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
final String encryptedString = Base64.encode(cipher.doFinal(message));
return encryptedString;
}
編輯.最后,我使用擴(kuò)展名為.der的公鑰文件(在它之前是.crt)來(lái)管理這個(gè)問(wèn)題,并且工作的代碼是:
InputStream in = mContext.getResources().openRawResource(R.raw.key);
CertificateFactory cf = CertificateFactory.getInstance("X509");
Certificate cert = cf.generateCertificate(new ByteArrayInputStream(org.apache.commons.io.IOUtils.toByteArray(in)));
PublicKey pubKey = cert.getPublicKey();
try
{
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
final String encryptedString = Base64.encode(cipher.doFinal(message));
return encryptedString;
}
catch (Exception e)
{
e.printStackTrace();
}
return "";
但是“迪瓦諾夫”回答了我提出的問(wèn)題.
最佳答案 異常錯(cuò)誤:0D0680A8:asn1編碼例程:ASN1_CHECK_TLEN:錯(cuò)誤的標(biāo)記意味著結(jié)果
InputStream in = mContext.getResources().openRawResource(R.raw.publicrsakey);
byte[] pubKeyBytes = org.apache.commons.io.IOUtils.toByteArray(in);
不代表ASN.1 DER編碼的消息.將其打印為十六進(jìn)制以驗(yàn)證確切問(wèn)題
Log.v("HEX", org.apache.commons.codec.binary.Hex.encodeHexString(pubKeyBytes);
總結(jié)
以上是生活随笔為你收集整理的java异常标记_java.lang.RuntimeException:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标记...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 支付宝里运动币币有什么用途
- 下一篇: wxpython多线程 假死_wxpyt