搜索
查看: 399|回复: 3

RSA加密算法求助!!

[复制链接]

12

主题

33

帖子

195

积分

一级会员

Rank: 2

积分
195
发表于 2018-6-16 00:55:50 | 显示全部楼层 |阅读模式
本帖最后由 261041951 于 2018-6-16 00:59 编辑

如下java代码执行的RSA加密,参照java的步骤改写成aar代码 执行结果长度都不一样,看了填充模式应该有问题,网上找了许多看不懂!
还有这个初始化向量如果java是这样的:cipher.init(1, publicKey,vi );。那在arr是不是这样设置:obRsa.setInitVector(vi)

  1. /*
  2. 关键java函数
  3. public static String getRandomAesKey() {
  4.     StringBuilder aeskey = new StringBuilder();
  5.     for (int i = 0; i < 16; i++) {
  6.         aeskey.append(value[(int) Math.rint(Math.random() * 60.0d)]);
  7.     }
  8.     return aeskey.toString();
  9. }

  10. public static PublicKey loadPublicKey(String serverkey) throws Exception {
  11.     return (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64Utils.decode(serverkey)));
  12. }

  13. public static byte[] encryptData(byte[] data, PublicKey publicKey) {               
  14.         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
  15.         cipher.init(1, publicKey);
  16.         return cipher.doFinal(data);
  17. }
  18.         

  19. aeskey=getRandomAesKey()
  20. outStr=RSAUtils.encryptData(aeskey.getBytes(), RSAUtils.loadPublicKey(serverkey))
  21. outStr=Base64Utils.encode(outStr);

  22. 结果如:outStr=Y45A7yxKkvE69lMPCRbHhbaHyKOAHbg3F79M0/tPnW4HqAx0VNXwoKjpfY0tBdAKEL2O0Uz1lbaZOp7hDc1JXITD8rQdStcNQy9HGVPLl/iyZeIsxionjfg0mZCVjwl6/3HiLxiohQylkQIv3X/YgEyUiNtXkePE7IJgRuQQMfbbgmgre3327VIG5z8brnfXPseZHUbRj+BflgZz4xW+8YUaODImR2kTSxJDR3sBEq0FPs48N52sdvqf8fanXhDZJA2e9Al1iVPazUk9Y7pOLLDMVb8r2QykAIs21KPtzZTAZ/BLxkYmpWJ+jN4xOObMNcO3tbTAAoOGNH+PSysRdg==
  23. */
复制代码

  1. import win.ui;
  2. import console;
  3. import crypt.rsa;
  4. import crypt.bin;
  5. import inet.url

  6. serverkey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr2d8EDF8LxnpvOarnA7IUm4QVHXYFQb1LXTAEwnjkwuixCOg96zK8wA7EQyUHVaUfdxxCNZxDxPUUHOOZ/WGu2K8THBaKfJxesdk2VptOdPuwea6Y6EpJ4oEi4hzKYBDm8XaOXfbdgnoDRe9E/o1Nfi5FqHca+W9IdAoeocHJ4lcrDQCKmFqrOkmvQM5YD9qfHOjNb6Q9llL1DOQV1ec23WFFuGLv3mLdvFWJa37q6+aYkUwpqUlpI3f6b6mo1t7fjwFiQBBBu9UhjnSWlRQv94xSPDDOD5G0eQ47rvwtVbVTcKMCSsh/dgDCoYdU6/g64c6x2YP0wJ/NmOmcJKO+QIDAQAB"
  7. getRandomAesKey=function(){
  8. var aeskey=""
  9. math.randomize()
  10. for(i=1;16;1){
  11.         aeskey++=tostring(math.random(0,60))
  12. }        
  13. return aeskey;
  14. }

  15. encryptData=function(str,key){
  16. obRsa=crypt.rsa()
  17. obRsa.setPassword(key)
  18. obRsa.setKeyParamPadding(1/*_PKCS5_PADDING*/) //此处怎么设置PKCS1Padding填充
  19. obRsa.setKeyParamMode(2/*_CRYPT_MODE_ECB*/)
  20. var s=obRsa.encrypt(str)
  21. return s;  
  22. }

  23. aeskey=getRandomAesKey()
  24. outStr=crypt.bin.encodeBase64(encryptData(aeskey,serverkey))        
  25. console.log(outStr)

  26. console.pause()
复制代码

回复

使用道具 举报

186

主题

2537

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13937
发表于 2018-6-16 12:08:34 | 显示全部楼层
你生成的是随机数据,不用加密每次运行都不可能是一样的。
RSA加密解密范例里有

回复

使用道具 举报

12

主题

33

帖子

195

积分

一级会员

Rank: 2

积分
195
 楼主| 发表于 2018-6-16 13:24:27 | 显示全部楼层
本帖最后由 261041951 于 2018-6-16 13:26 编辑
Jacen.He 发表于 2018-6-16 12:08
你生成的是随机数据,不用加密每次运行都不可能是一样的。
RSA加密解密范例里有


我把数据固定,导入指定的公钥serverkey出现如图错误提示呢!


回复

使用道具 举报

186

主题

2537

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13937
发表于 2018-6-16 19:01:39 | 显示全部楼层
261041951 发表于 2018-6-16 13:24
我把数据固定,导入指定的公钥serverkey出现如图错误提示呢!

以后提问注意代码不要用截图发。
就算别人有心人肉OCR,也没那时间,多帮别人考虑考虑,会有更多人愿意帮助你。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-8-21 04:37 , Processed in 0.062501 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表