Android-Java RSA解密

Android-Java RSA解密,第1张

概述我需要从二进制字符串为RSA算法创建一个公共密钥.我的代码是:StringpubKey="tihq/Gk3OUs5NzP+XTRKXBwSxHtB0TWn0RREcpXEtp316tyD9DzKaIbdKexb/mRr";byte[]keyBytes=Base64.decode(pubKey,Base64.DEFAULT);/estifiscorrect:okLog.d("responsekeyBytes",newStrin

我需要从二进制字符串为RSA算法创建一个公共密钥.

我的代码是:

String pubKey = "tihq/Gk3OUs5NzP+XTRKXBwSxHtB0TWn0RREcpXEtp316tyD9DzKaIbdKexb/mRr";byte[] keyBytes = Base64.decode(pubKey,Base64.DEFAulT);//test if is correct: okLog.d("response keyBytes",new String(Base64.encode(keyBytes,Base64.DEFAulT)));KeyFactory keyFactory = KeyFactory.getInstance("RSA");      X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(spec);//PublicKey publicKey = (PublicKey) keyFactory.generatePublic(spec);

但是我有这个错误:

java.security.spec.InvalIDKeySpecException: java.lang.RuntimeException: error:0D0680A8:asn1 enCoding routines:ASN1_CHECK_TLEN:wrong tag

解决方法:

解决了.
问题是我有模数和指数,所以我必须这样做:

String pubKey = "tihq/Gk3OUs5NzP+XTRKXBwSxHtB0TWn0RREcpXEtp316tyD9DzKaIbdKexb/mRr"; //64 caratteriString exponent = "AQAB";byte[] keyBytes = Base64.decode(pubKey,Base64.DEFAulT);byte[] exponentByte = Base64.decode(exponent,Base64.DEFAulT);KeyFactory keyFactory = KeyFactory.getInstance("RSA");RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(keyBytes), new BigInteger(exponentByte));RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);
总结

以上是内存溢出为你收集整理的Android-Java RSA解密全部内容,希望文章能够帮你解决Android-Java RSA解密所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1095396.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存