开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

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

[完成] 求java代码转易代码或js

 关闭 [复制链接]
结帖率:33% (1/3)
发表于 2018-12-23 17:13:46 | 显示全部楼层 |阅读模式   四川省成都市
5精币


传入
Function.encrypt("{\"Phone\":\"" + LoginActivity.this.post_phone + "^android_" + Function.getVersionName(LoginActivity.this) + "\",\"Password\":\"" + Function.md5(LoginActivity.this.post_psd) + "\"}")
       
        下面是代码
import org.json.JSONObject;
        public static String encrypt(String data) throws Exception {
        String result = "";
        List<String> dataString = new ArrayList();
        JSONObject jsonData = new JSONObject(data);
        Iterator<String> jsonList = jsonData.keys();
        while (jsonList.hasNext()) {
            String key = (String) jsonList.next();
            String val = jsonData.getString(key);
            if (val.indexOf("{") > -1 && val.indexOf("}") > -1 && val.indexOf("[引号]") < 0) {
                JSONArray list = new JSONArray(val);
                List<List<String>> valDataString = new ArrayList();
                for (int i = 0; i < list.length(); i++) {
                    JSONObject jsonObject = list.getJSONObject(i);
                    List<String> subDataString = new ArrayList();
                    Iterator<String> jsonObjectList = jsonObject.keys();
                    while (jsonObjectList.hasNext()) {
                        String subKey = (String) jsonObjectList.next();
                        subDataString.add(subKey + "|" + jsonObject.getString(subKey));
                    }
                    Collections.sort(subDataString);
                    valDataString.add(subDataString);
                }
                val = "[";
                for (List<String> subList : valDataString) {
                    val = val + "{";
                    for (String subItem : subList) {
                        String[] lastData = subItem.split("\\|");
                        val = val + "\"" + lastData[0] + "\":\"" + lastData[1] + "\",";
                    }
                    val = val.substring(0, val.length() - 1) + "},";
                }
                val = val.substring(0, val.length() - 1) + "]";
            }
            dataString.add(key + "|" + val);
        }
        String sig = "";
        Collections.sort(dataString);
        for (String sub : dataString) {
            String[] strArray = sub.split("\\|");
            if (strArray.length > 1) {
                sig = sig + strArray[0] + "=" + strArray[1].replace("\"", "") + "&";
            } else {
                sig = sig + strArray[0] + "=&";
            }
        }
        if (!sig.equals("")) {
            sig = sig.substring(0, sig.length() - 1);
        }
        dataString.add("Signature|" + md5(md5("h$^kl67(" + sig) + "h$^kl67("));
        result = "{";
        for (String sub2 : dataString) {
            strArray = sub2.split("\\|");
            if (strArray.length <= 1) {
                result = result + "\"" + strArray[0] + "\":\"\",";
            } else if (strArray[1].indexOf("{") <= -1 || strArray[1].indexOf("}") <= -1 || strArray[1].indexOf("[引号]") >= 0) {
                result = result + "\"" + strArray[0] + "\":\"" + strArray[1] + "\",";
            } else {
                result = result + "\"" + strArray[0] + "\":" + strArray[1] + ",";
            }
        }
        if (!result.equals("")) {
            result = result.substring(0, result.length() - 1);
        }
        return result + "}";
    }


整个Function 传附件了

Function .txt

32.63 KB, 下载次数: 1, 下载积分: 精币 -1 枚

最佳答案

查看完整内容

先解析JSON参数名和参数值。然后排序。再取MD5就是Signature的值。最后转为JSON数据。。。 比如传入参数: {"Phone":"111111111^android_22222","Password":"333333"} 然后排序之后就是: sig = “Password=333333&Phone=111111111^android_22222” 最后计算Signature signature = md5(md5("h$^kl67(" + sig) + "h$^kl67(")
结帖率:88% (7/8)

签到天数: 4 天

发表于 2018-12-23 17:13:47 | 显示全部楼层   重庆市重庆市
先解析JSON参数名和参数值。然后排序。再取MD5就是Signature的值。最后转为JSON数据。。。
比如传入参数:
{"Phone":"111111111^android_22222","Password":"333333"}
然后排序之后就是:
sig = “Password=333333&Phone=111111111^android_22222”
最后计算Signature
signature =  md5(md5("h$^kl67(" + sig) + "h$^kl67(")




回复

使用道具 举报

结帖率:89% (8/9)
发表于 2018-12-23 17:32:10 | 显示全部楼层   河南省南阳市
貌似是转义或者字符替换 的代码
回复

使用道具 举报

结帖率:33% (1/3)
 楼主| 发表于 2018-12-23 17:33:16 | 显示全部楼层   四川省成都市
美女じ打屁屁ジ 发表于 2018-12-23 17:32
貌似是转义或者字符替换 的代码

对Java不懂啊 能帮看看吗
回复

使用道具 举报

结帖率:33% (1/3)
 楼主| 发表于 2018-12-23 17:35:18 | 显示全部楼层   四川省成都市
18080044449 发表于 2018-12-23 17:33
对Java不懂啊 能帮看看吗

能帮Java调试 输出个sig这个参数看看也行哈哈哈哈
回复

使用道具 举报

结帖率:33% (1/3)
 楼主| 发表于 2018-12-23 18:14:08 高大上手机用户 | 显示全部楼层   四川省凉山彝族自治州
波哥野结衣 发表于 2018-12-23 17:41
先解析JSON参数名和参数值。然后排序。再取MD5就是Signature的值。最后转为JSON数据。。。
比如传入参数: ...

非常感谢我去试试
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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