【发布时间】:2017-08-07 11:10:37
【问题描述】:
参考本次讨论:Decode South African (ZA) Drivers License
请协助我在 android 上尝试在 Java 中创建 PublicKey 实例时似乎遇到了错误。我在下面粘贴了错误:
java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
这里是sn-p的代码:
Cipher asymmetricCipher = null;
asymmetricCipher = Cipher.getInstance("RSA");
X509EncodedKeySpec publicKeySpec128 = new X509EncodedKeySpec(key128block);
X509EncodedKeySpec publicKeySpec74 = new X509EncodedKeySpec(key74block);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key key = keyFactory.generatePublic(publicKeySpec128);
asymmetricCipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainText = asymmetricCipher.doFinal(topBlocksData[0]);
【问题讨论】:
-
看起来密钥格式不正确。是不是忘了去掉一层 Base64 编码?
-
key128block = Base64.decode(keys[2].replaceAll("-----(BEGIN|END) RSA PUBLIC KEY-----", "").replaceAll("\ n", "").getBytes(), Base64.DEFAULT);
-
@anos 您使用此代码成功扫描了吗?
-
我使用了不同的方法。但请检查@james-k-polk 的答案
-
@AnosK.Mhazo 您提取了多少信息?您是否也设法获得了图像?
标签: java android encryption rsa public-key