开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 555|回复: 3
收起左侧

[已解决] 加解密例程

 关闭 [复制链接]
结帖率:77% (10/13)
发表于 2024-2-4 20:26:25 | 显示全部楼层 |阅读模式   江苏省苏州市
10精币
var encrypt = new JSEncrypt();
encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoYCTBQXVL0JchWm8zD4iiwQi3cgyDB

+1G2ami7GjaIu2vwTXFKN6uqE7/AbGxbpmxFkoPDBweZ2KdmFMWPyQbXM3//cPU1U50jNEzRXPSqMXfVX1VEF57JNe99mdGorK1OzbclGkS5Apd6Ycatd4H6W76XIJBe5msHqcVIWi2wIDAQAB');

var decrypt = new JSEncrypt();
decrypt.setPrivateKey("MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALGGM6ha94RLWeIkvXUARE5nxFDPPXGfMhpL9QcVRqqr+fotnh3iZThk1kZcKuhgK9ZuKSzro

+D1T0MNu3jDBGw69PJ6beXR7arWLetV/NsYNoUyja28kucxcUeyrvXmSmF5jc1uogyXm8RHiQxgrfPLSxgPjG60u4eY91ECy8IZAgMBAAECgYAu

+bIltJyWt1G7k7lGgqGQlcjPEWfS7ytU5hCapTij5Qoq93NFuSjLuXMx/yWjg/9VqKTgrCIbXw5wUevv0rsSb2u7qdq65anvY/4MTXffkSVjIYpfJBod49+26xjY8fYRXNGI8ygrbZGTD0G6MaBJpO4kgaWi6aG+RVeialInAQJBAOjjsbr

+yKZc9Qt5+Srirb6sbqMPp6f3eZtqrln8tBSK2lxtQKQLRZ4jqxPn627kKvLndy+72es8W/GcwkIf75ECQQDDJAOUrYukXSz65NU2d15BZ4qTMKlefIRRxdeC6y2c

+W8J8/j8SlTtpRVSYaktJzzijGixm6qdrIU2bU8Kh/YJAkBV0YHu3HBoDZ0m632L9hf8SWJDqEMpvCINyVQSSPK7Fye8I25MhPLUgWRLY4z4QhApjm33Iwv8iTOAZzmWUFphAkAs

+R/aJCUKvG6hZBu/ccNHT5WgVpayMABO2EnS4mCgzNvKb2/ytS7dli5Tzi4vOdvOWo3GYRnxPNF2ubp9stgBAkA4OpHEA5AOUSUuiuE3mnYpTkh00uhmrtxOmb7P/OrBBLvVMSMpleBMV8UtnVd9a1SoUa6+DnzcxCTcITm8sNHl");



function sendRequest(path, method, server, param, callback, log) {
    if (!param) {
        param = {};
    }

    var async = true;
    if (method == "SYNC") {
        async = false;
        method = "GET";
    }

    param["_"] = new Date().getTime();

    var aesKey = new UUID().toString().substring(0, 16);
    var key = CryptoJS.enc.Utf8.parse(aesKey);

    var aesParam = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(encodeURIComponent(JSON.stringify(param))), key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    }).toString();

    var data = {
        ip: "127.0.0.1",
        method: method,
        server: server,
        sign: encrypt.encrypt(aesKey),
        param: aesParam,
        "_": param["_"]
    };

    if (log) {
        console.log("请求路径:" + path + ",参数:", JSON.stringify(param));
    }

    return $.ajax(HOST + "/api/interface" + path, {
        method: "POST",
        data: data,
        async: async,
        complete: function (xhr) {
            var time = xhr.getResponseHeader("Date");
            if (time) {
                window.now = new Date(time);
            }
            if (xhr.readyState == 0) {
                fittk.close();
                return;
            }
            if (xhr.readyState != 4 || xhr.status != 200) {
                fittk.close();
                fittk.errorToast("服务器异常 " + xhr.status);
                return;
            }
            var response = xhr.responseJSON;
            aesKey = decrypt.decrypt(response.sign);
            key = CryptoJS.enc.Utf8.parse(aesKey);
            var aesData = CryptoJS.enc.Utf8.stringify(CryptoJS.AES.decrypt(response.data, key, {
                mode: CryptoJS.mode.ECB,
                padding: CryptoJS.pad.Pkcs7
            })).toString();
            var res = JSON.parse(decodeURIComponent(aesData));
            if (log) {
                console.log("返回值:", JSON.stringify(res));
            }
            if (res.code == ERROR) {
                top.fittk.close();
                top.fittk.errorToast(res.message || "服务器异常");
            }
            callback(res);
        }
    });
}


代码中这一段
   var data = {

        ip: "127.0.0.1",
        method: method,
        server: server,
        sign: encrypt.encrypt(aesKey),
        param: aesParam,
        "_": param["_"]
    };


以下是抓包数据,需sign和param的加解密例程
ip=127.0.0.1&method=GET&server=1&sign=hA%2BbaVlFnaExaOpsZUxnjW8SS2mUpKKRgun%2BdHUwTbMI3UH63Qv12DRPJw11RqdYtjRDkAOckAQ4vBd%2Fwp2yqT2s2v48RNdUK4fL5zdkDaSGE7cNXXHda6xHC97mc5R4WnHMYtCwQ7jjwXLcx0kJsF03VyBAQkgPGeVOFHX9Wbc%3D&param=ch9kqBI%2FsmM3UjWNd%2FVlYeWXAzor4TJRKFe4Yw6aoF%2BBFZmSzMrssMRQ3Zcr9E6IFyFx7k7%2Fln7TOJdCmeTeNSjtMtCq%2F8RXragqPh%2BhuirW8XiWRtoadOxsRQF0tnp5y8V%2FupJJSDGwp%2FXl7GR2RA%2BjreBKa8GvV3DLBY%2FrVKL1pQNvEhZFtoNvHoH7kMO8mcq%2BPqfrGyq0%2BvDqYSQeEkQgLWvhwb51xNtHoBVmZ0PWFjhfVZyu7kYQhjdN7lMzGwzdL1kw7cdWdgrkOoHM53ll9TLjVsCYoG5PWy2QS8yF2k%2BHKT7fMi1FgxtnuawDTpQfKHLnP1LkcdPqWYmcadAQYOgQK2%2FVUfdC8BecnD2MhHpS8z5vhJkXwoNKFu0nUoV600RvtjL1pUGAB9WYaliSTVBnbZL56jJjjJP8HZ%2FjeJBG3O9RncdK6RIGnX3DLNHVERsRtAjYV4%2FLHfAG9UUJjbTj15h%2BH3Den79DqFwgj6QgbcxFVFH5iSP5QaLy&_=1707029290245

最佳答案


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 4 天

发表于 2024-2-4 20:26:26 | 显示全部楼层   湖南省长沙市
就这样
QQ截图20240204203618.jpg
aes.e (962.16 KB, 下载次数: 2)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

签到天数: 4 天

发表于 2024-2-4 20:33:24 | 显示全部楼层   湖南省长沙市
aeskey就是随机16位字符,sign就是rsa公钥加密(aeskey), param便是url编码之后的参数 然后用随机的asekey进行aes/ecb/pcks7加密。 因为这公私钥并不是同一套,所以只能进行单方面加密的。
回复

使用道具 举报

结帖率:77% (10/13)

签到天数: 3 天

 楼主| 发表于 2024-2-5 07:51:24 | 显示全部楼层   江苏省苏州市

非常感谢!
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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