开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 18429|回复: 5
收起左侧

[技术文章] 招财APP加密解密算法分析,从java到易语言

[复制链接]
发表于 2016-12-7 06:08:04 | 显示全部楼层 |阅读模式   湖南省益阳市
本帖最后由 yshell 于 2016-12-7 06:21 编辑

很久没有发帖来了,今天写一篇分析android算法的文章
招财app safejson的加密解密算法,翻译到易语言,比较简单的app,希望能给网友们一点参考经验
首先定位safejson加密代码处:
随便搜一下就找到算法SafeEncode类
  1. C:\Users\Administrator\Desktop\kjkj.zhaocai.wealth_3.2.5_46.jar!\kjkj\zhaocai\wealth\object\SafeEncode.class
复制代码


我就在下面一句一句的翻译了,(日了狗,第一次发布后,下面的java代码及翻译都消失了.....又得重新写...)

public class SafeEncode
{
  private static String key = "hopeandhonour";
  private static String md5Key = MD5.getCodeMd5(key); //也就是1e0a5bda50655454cd41359411eee0ee

//解密算法
  public static String decodeZhaocai(String paramString)
    throws IOException
  {
//将参数进行base64解码
    byte[] arrayOfByte1 = Base64.decode(paramString.getBytes("UTF-8"));

//将md5key转换成字节数组
    byte[] arrayOfByte2 = md5Key.getBytes("UTF-8");
    int i = arrayOfByte2.length;

//创建一个新的字节数组,长度和参数base64解码后的一样
    byte[] arrayOfByte3 = new byte[arrayOfByte1.length];
    int j = arrayOfByte1.length;

//遍历arrayOfByte1
    for (int k = 0;; k++)
    {
      if (k >= j) { //如果遍历完
arrayOfByte1的所有字节
   //将arrayOfByte3转换成字符串返回
        return new String(arrayOfByte3, 0, arrayOfByte3.length);
      }

//将参数base64解密后的字节 减去 md5Key的字节  k为0-参数base64解密后的字节长度  i为 md5Key的长度32  k%i 也就是0-31  一直到遍历完
      arrayOfByte3[k] = ((byte)(arrayOfByte1[k] - arrayOfByte2[(k % i)]));
    }
  }
//加密算法
  public static String encodeZhaocai(String paramString)
  {
    try
    {

//将参数转换为字节数组
      byte[] arrayOfByte1 = paramString.getBytes("UTF-8");
      byte[] arrayOfByte2 = md5Key.getBytes("UTF-8");
      int i = arrayOfByte2.length;
      int j = arrayOfByte1.length;
      byte[] arrayOfByte3 = new byte[j];
      String str;

//遍历参数所有字节
      for (int k = 0;; k++)
      {
        if (k >= j) //如果遍历完参数所有字节
        {

//将加完后的字节数组进行base64编码
          byte[] arrayOfByte4 = Base64.encodebyte(arrayOfByte3);

          str = new String(arrayOfByte4, 0, arrayOfByte4.length);
          break;
        }

//将参数的每一个字节加上md5Key所对应的字节 和上面解密是一样的 一个是b64完减去key 一个是加上key后b64
        arrayOfByte3[k] = ((byte)(arrayOfByte1[k] + arrayOfByte2[(k % i)]));
      }
      return str;
    }
    catch (UnsupportedEncodingException localUnsupportedEncodingException)
    {
      localUnsupportedEncodingException.printStackTrace();
      str = "";
    }
  }
}

像对应的易语言代码,我就不放源代码了,免得别有用心的人直接拿去了,,只截图了加密,有需要的或者是练习的,自己照着写解密算法,发帖只为帮助新手



求好评,求搞基





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 5好评 +3 精币 +10 收起 理由
421220065 + 1 支持开源~!感谢分享
夏天大大 + 1 感谢发布原创作品,精易因你更精彩!
Cand + 1 + 5 感谢发布原创作品,一定好好学习,天天向上
逆袭撸破 + 1 + 2 已经在付费学习,奈何没有java基础,步步艰难
Aurora + 1 + 1 那么问题来了,大神能带我飞吗

查看全部评分

本帖被以下淘专辑推荐:

结帖率:42% (5/12)

签到天数: 21 天

发表于 2018-6-3 16:02:13 | 显示全部楼层   湖南省永州市
都看不懂, 话说为什么不能好评呢
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2018-5-19 16:56:24 | 显示全部楼层   山东省济宁市
厉害了我的哥
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2017-5-18 21:39:55 | 显示全部楼层   广西壮族自治区北海市
666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2016-12-7 11:47:03 | 显示全部楼层   重庆市重庆市
厉害
回复 支持 反对

使用道具 举报

结帖率:90% (18/20)
发表于 2016-12-7 10:25:45 | 显示全部楼层   广东省江门市
没有JAVA的基础,就算找到人口 都看不懂, 话说为什么不能好评呢
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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