android java rsa差异,RSA加密:Java和Android之间的区别

我使用RSA加密Android上的用户名和密码,并在服务器上解密它们(tomcat 6,java 1.6).Android加密:

PublicKey pubKey = readPublicKeyFromFile(mod, ex);

Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.ENCRYPT_MODE, pubKey);

byte[] cipherData = cipher.doFinal(data);

return cipherData;

Java Tomcat解密:

PrivateKey pubKey = readPrivateKeyFromFile(mod, ex);

Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.DECRYPT_MODE, pubKey);

byte[] cipherData = cipher.doFinal(data);

return cipherData;

如果我使用android部分OUTSIDE android(只是在主方法)它工作正常.但不在我的android(模拟器)里面.在服务器端,我收到以下错误:

javax.crypto.BadPaddingException: Blocktype mismatch: 0

at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:311)

at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255)

at com.sun.crypto.provider.RSACipher.a(DashoA13*..)

at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)

at javax.crypto.Cipher.doFinal(DashoA13*..)

我将mod和ex保留为BigIntegers常量,因此我不将它们写入文件中.我知道java1.6和java 1.5加密之间存在差异,因此两者都是用java 1.6编译的.

一些调试信息:

在android中调试期间,我可以看到pubKey包含十六进制的模数和指数.如果我在main方法中调试(同样的代码),我可以看到pubKey包含十进制的模数和指数.

我究竟做错了什么?

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值