首页
社区
课程
招聘
[求助]大大们,救命!android RSA 和java RSA对称加密最后的结果不一样
发表于: 2016-8-28 02:10 6821

[求助]大大们,救命!android RSA 和java RSA对称加密最后的结果不一样

2016-8-28 02:10
6821
由于项目的一些原因 需要把逆向的借口做成java的 然后生成dll 给其他同事调用(c#语言),但是由于逆向的是android的代码,通过rsa对称加密后的结果和我使用java代码逆向出来的结果不一样!
逆向android代码如下:(不可改)
    String e = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD2DT4odzkDd7hMlZ7djdZQH12j38nKxriINW1MGjMry3tXheya113xwmbBOwN0GA4zTwKFauFJRzcsD0nDFq1eaatcFKeDF25R4dnQRX+4BdTwFVS8lIb8nJMluSBwK+i4Z3VF+gfZ0AqQOXda6lJ4jPBt9Ep7VXEAHXUDn9JM8wIDAQAB";
    byte[] paramByte = Base64.decode(e,Base64.DEFAULT);
    RSAPublicKey paramString = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(paramByte));

我写的java代码:(可修改)
    String e = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD2DT4odzkDd7hMlZ7djdZQH12j38nKxriINW1MGjMry3tXheya113xwmbBOwN0GA4zTwKFauFJRzcsD0nDFq1eaatcFKeDF25R4dnQRX+4BdTwFVS8lIb8nJMluSBwK+i4Z3VF+gfZ0AqQOXda6lJ4jPBt9Ep7VXEAHXUDn9JM8wIDAQAB";
    byte[] paramByte = Base64decode(e);
    RSAPublicKey paramString = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(paramByte));
    System.out.print(paramString);

折腾了一周了,网上的办法都试遍了, 但是没有解决的聊, 实在是无能为力了。
大大们,帮帮忙救命啊...
android的代码是不能修改的,因为这是逆向apk的源代码。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
1.谁告诉你RSA是对称算法的?

2.这这段代码只是获取publicKey而已,key既然能解析出来,那key一定是一样的.

3. 你说的不一样是指的哪的不一样
2016-8-28 06:14
0
雪    币: 54
活跃值: (690)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1、rsa不是对称加密。。。
2、rsa加密时,会有随机因子,导致相同秘钥和数据下每次加密都可能不一样。所以不用太在意。只要对方能解密就行了
2016-8-28 11:07
0
雪    币: 239
活跃值: (650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
试过解密没?
2016-8-28 13:51
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
android里rsa里带有随机数,加密结果不同,能拿到公私密钥就能正常解密。
2016-8-28 17:52
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
本来就不会一样的。。至于为什么。。呵呵。。还有就是 java生成dll给C#调用?高端
2016-8-28 20:03
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
就是最后算出来的publidKEY不一样。android的和java的
2016-8-29 12:24
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
就是最后求出的publickey不一样。 对方服务器返回参数错误。 用android就没问题, java就给我返回错误。
2016-8-29 12:25
0
雪    币: 12
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是呀,  不过也可以写成c#的, 但是我还不是很厉害 所以写不出来。
2016-8-29 12:27
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
android系统的RSA实现是"RSA/None/NoPadding",而标准JDK实现是"RSA/None/PKCS1Padding"
2016-8-29 16:11
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
11
赞,正想说padding
2016-9-5 09:35
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
你的qq号多少啊,手残不小心好友都删光了
2016-9-18 09:03
0
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
安卓/js 和 java之间好像经常因为默认padding不同出现加密结果不符的问题
2016-9-20 14:13
0
游客
登录 | 注册 方可回帖
返回
//