Android RSA 与标准Java RSA实现区别

一开始在Android尝试使用RSA,是直接参考文章:
http://blog.csdn.net/s464036801/article/details/7794599
该文章未能给出在Android上的正确的解决方案,但代码整体是可用的,需要注意一下几点的替换:
1、BASE64Decoder在Android中是不存在的,需用Base64替换,
BASE64Decoder base64Decoder= new BASE64Decoder();
byte[] buffer= base64Decoder.decodeBuffer(privateKeyStr);
替换为:
byte[] buffer= Base64.decode(DEFAULT_PUBLIC_KEY, Base64.DEFAULT);

2、对于String数据转换为byte[],直接使用getBytes()是不合理的,
标准Java的解决方案是:DatatypeConverter.parseHexBinary(data);
但Android上没有DatatypeConverter,所以要进行替换,
参考文章:
http://stackoverflow.com/questions/34342136/alternatives-a-datatypeconverter-in-androidsolved
在Android studio中加入依赖:compile 'commons-codec:commons-codec:1.3'
Hex.decodeHex(data.toCharArray())
替换为:
DatatypeConverter.parseHexBinary(data)

3、cipher= Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
做加密,但是一直无法与服务器那边对接,而且每次生成的密文是一样的。
后来参考文章:http://my.oschina.net/oschenxiaomo/blog/543199
使用cipher= Cipher.getInstance("RSA/ECB/PKCS1Padding")后就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言 如今手机app五彩缤纷,确保手机用户的数据安全是开发人员必须掌握的技巧,下面通过实例介绍DES在androi...
    freesan44阅读 4,842评论 1 1
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 8,153评论 0 14
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,255评论 25 709
  • 1、不安全的随机数生成,在CSRF TOKEN生成、password reset token生成等,会造成toke...
    nightmare丿阅读 9,158评论 0 1
  • 这几天睡眠一直不好。随便写点啥。 太阳越来越高,慵懒的抚慰着这个偏僻的小镇。镇中间有条不宽不窄的河,中间有两座连接...
    楠苜阅读 1,124评论 0 0