开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

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

[已解决] Java转易语言

 关闭 [复制链接]
结帖率:100% (1/1)
发表于 2025-5-26 20:11:16 | 显示全部楼层 |阅读模式   四川省成都市
5精币
代码已经逆向出来了,用java测试通过,需要将协议头里的一些参数生成aes的key,然后用key去加密参数,并post发送出去,然后再解析数据,需要大佬帮忙写一下易语言的源码,酬金两包华子

最佳答案

查看完整内容

[e=2].版本 2 .支持库 dp1 .支持库 spec .支持库 eAPI .子程序 生成密钥, 文本型 .参数 appId, 文本型 .参数 ipayCustomerUrl, 文本型 .参数 appKey, 文本型 .参数 dhVideoList_sha256, 文本型 .参数 length, 整数型 .参数 timeStepLen, 整数型 .参数 time, 长整数型 .局部变量 组合字符串, 文本型 .局部变量 哈希字节集, 字节集 .局部变量 hashBase64, 文本型 .局部变量 时间步长索引, 长整数型 .局部变量 最终哈希, 文本型 ' ...

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

签到天数: 2 天

发表于 2025-5-26 20:11:17 | 显示全部楼层   河北省衡水市
  
子程序名返回值类型公开备 注
生成密钥文本型 
参数名类 型参考可空数组备 注
appId文本型
ipayCustomerUrl文本型
appKey文本型
dhVideoList_sha256文本型
length整数型
timeStepLen整数型
time长整数型
变量名类 型静态数组备 注
组合字符串文本型 
哈希字节集字节集 
hashBase64文本型 
时间步长索引长整数型 
最终哈希文本型 
' 步骤1:构建组合字符串
组合字符串 = appId + ipayCustomerUrl + appKey + 到大写 (dhVideoList_sha256)
' 步骤2:SHA256哈希计算
哈希字节集 = 取数据摘要 (到字节集 (组合字符串))
hashBase64 = 编码_BASE64编码 (哈希字节集)
' 步骤3:扩展长度至50位以上
判断循环首 (取文本长度 (hashBase64) < 50)
哈希字节集 = 取数据摘要 (到字节集 (hashBase64))
hashBase64 = hashBase64 + 编码_BASE64编码 (哈希字节集)
判断循环尾 ()
' 步骤4:生成时间相关密钥
时间步长索引 (time ÷ 300) + timeStepLen
最终哈希 = 计算时间哈希 (到文本 (时间步长索引))
' 步骤5:生成最终密钥
返回 (生成最终字符 (最终哈希, length, hashBase64))
子程序名返回值类型公开备 注
生成最终字符文本型 
参数名类 型参考可空数组备 注
hash文本型
length整数型
rootString文本型
变量名类 型静态数组备 注
结果文本型 
字符集长度整数型 
i整数型 
索引整数型 
字符集长度 = 取文本长度 (rootString)
计次循环首 (length, i)
索引 = 进制_十六到十 (取文本中间 (hash, i × 2 - 1, 2)) % 字符集长度
结果 = 结果 + 取文本中间 (rootString, 索引 + 1, 1)
计次循环尾 ()
返回 (结果)
子程序名返回值类型公开备 注
计算时间哈希文本型 
参数名类 型参考可空数组备 注
时间文本文本型
变量名类 型静态数组备 注
哈希字节集字节集 
哈希字节集 = 取数据摘要 (到字节集 (时间文本))
返回 (字节集_字节集到十六进制 (哈希字节集))
' AES加密子程序
子程序名返回值类型公开备 注
AES加密文本型 
参数名类 型参考可空数组备 注
明文文本型
密钥文本型
变量名类 型静态数组备 注
加密对象加解密对象 
加密结果字节集 
加密对象.算法类型 = #对称算法_AES_CBC
加密对象.密钥 = 到字节集 (密钥)
加密对象.初始向量 = 取空白字节集 (16) ' 根据实际情况修改IV
加密对象.填充方式 = #填充方式_PKCS7
加密结果 = 加密对象.加密 (到字节集 (明文), )
返回 (编码_BASE64编码 (加密结果))
' 主程序
子程序名返回值类型公开备 注
发送加密请求  
变量名类 型静态数组备 注
动态密钥文本型 
加密参数文本型 
协议头文本型 
响应文本文本型 
' 生成动态密钥
动态密钥 = 生成密钥 ("your_appid", "https://api.example.com", "your_appkey", "video_hash", 16, 1, 取现行时间戳 ())
' 加密参数
加密参数 = AES加密 ("需要加密的参数", 动态密钥)
' 构建协议头
协议头 = "Content-Type: application/json" + #换行符 +"Authorization: Bearer " + 动态密钥 + #换行符 +"X-Encrypted: true"
' 发送请求
响应文本 = 到文本 (网页_访问_对象 ("https://目标URL", 1, 加密参数, , , 协议头))
' 解析响应(假设返回base64加密数据)
响应文本 = 编码_URL解码 (响应文本, )
响应文本 = 到文本 (编码_BASE64解码 (响应文本))
调试输出 ("解密后的响应:", 响应文本)
子程序名返回值类型公开备 注
取现行时间戳长整数型 
返回 (时间_取现行时间戳 () ÷ 1000)


i支持库列表   支持库注释   
dp1数据操作支持库一
spec特殊功能支持库
eAPI应用接口支持库

回复

使用道具 举报

结帖率:88% (80/91)

签到天数: 1 天

发表于 2025-5-26 20:14:40 | 显示全部楼层   江苏省苏州市
就不能源码 截图出来看看
回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2025-5-26 20:32:49 | 显示全部楼层   四川省成都市
[Java] 纯文本查看 复制代码
public static String b(String appId, String ipayCustomerUrl, String appKey, String dhVideoList_sha256, int length, int timeStepLen, long time) throws NoSuchAlgorithmException {
        StringBuilder sb2 = new StringBuilder(appId);
        sb2.append(ipayCustomerUrl);
        sb2.append(appKey);
        StringBuilder combinedStr = sb2.append(dhVideoList_sha256.toUpperCase());
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hashBytes = digest.digest(combinedStr.toString().getBytes(StandardCharsets.UTF_8));
        String hashBase64 = Base64.getEncoder().encodeToString(hashBytes);
        while (hashBase64.length() < 50) {
            byte[] hashBytes2 = digest.digest(hashBase64.getBytes(StandardCharsets.UTF_8));
            hashBase64 = hashBase64 + Base64.getEncoder().encodeToString(hashBytes2);
        }
        return d(length, hashBase64, timeStepLen, time);
    }

    public static String a(String hash, int length, String rootString) {
        StringBuilder result = new StringBuilder();
        hash.length();
        int charsetLength = rootString.length();
        for (int i10 = 0; i10 < length; i10++) {
            int index = Integer.parseInt(hash.substring(i10 * 2, (i10 * 2) + 2), 16) % charsetLength;
            result.append(rootString.charAt(index));
        }
        return result.toString();
    }


    public static String d(int length, String rootString, int index, long time) throws NoSuchAlgorithmException {
        long currentTimeSeconds = time;//Instant.now().getEpochSecond();
        long timeStepIndex = (currentTimeSeconds / 300) + index;
        String hash = c(Long.toString(timeStepIndex));
        return a(hash, length, rootString);
    }
回复

使用道具 举报

结帖率:100% (5/5)

签到天数: 2 天

发表于 2025-5-26 21:09:29 | 显示全部楼层   河南省洛阳市
6包华子 联系~

回复

使用道具 举报

结帖率:98% (44/45)

签到天数: 3 天

发表于 2025-5-26 22:56:38 | 显示全部楼层   浙江省湖州市
写的对不对不知道
  
子程序名返回值类型公开备 注
b文本型 
参数名类 型参考可空数组备 注
appId文本型
ipayCustomerUrl文本型
appKey文本型
dhVideoList_sha256文本型
length整数型
timeStepLen整数型
time长整数型
变量名类 型静态数组备 注
combinedStr文本型 
hashBytes字节集 
hashBase64文本型 
combinedStr = appId + ipayCustomerUrl + appKey + 到大写 (dhVideoList_sha256)
hashBytes = 取数据摘要 (到字节集 (combinedStr))
hashBase64 = 编码_BASE64编码 (hashBytes)
判断循环首 (取文本长度 (hashBase64) < 50)
hashBytes = 取数据摘要 (到字节集 (hashBase64))
hashBase64 = hashBase64 + 编码_BASE64编码 (hashBytes)
判断循环尾 ()
返回 (d (length, hashBase64, timeStepLen, time))
子程序名返回值类型公开备 注
a文本型 
参数名类 型参考可空数组备 注
hash文本型
length整数型
rootString文本型
变量名类 型静态数组备 注
result文本型 
i整数型 
charsetLength整数型 
index整数型 
charsetLength = 取文本长度 (rootString)
result = “”
计次循环首 (length, i)
index = 十六进制到整数s (取文本中间 (hash, (i - 1) × 2 + 1, 2)) % charsetLength
result = result + 取文本中间 (rootString, index + 1, 1)
计次循环尾 ()
返回 (result)
子程序名返回值类型公开备 注
d文本型 
参数名类 型参考可空数组备 注
length整数型
rootString文本型
index整数型
time长整数型
变量名类 型静态数组备 注
timeStepIndex长整数型 
hash文本型 
timeStepIndex = time ÷ 300 + index
hash = c (到文本 (timeStepIndex))
返回 (a (hash, length, rootString))
子程序名返回值类型公开备 注
c文本型 
参数名类 型参考可空数组备 注
input文本型
变量名类 型静态数组备 注
digest字节集 
hexHash文本型 
digest = 取数据摘要 (到字节集 (input))
hexHash = 字节集到十六进制s (digest)
返回 (hexHash)
子程序名返回值类型公开备 注
字节集到十六进制s文本型 
参数名类 型参考可空数组备 注
字节集数据字节集
变量名类 型静态数组备 注
i整数型 
结果文本型 
字节值整数型 
结果 = “”
计次循环首 (取字节集长度 (字节集数据), i)
字节值 = 取字节集数据 (字节集数据, 1, i - 1)
结果 = 结果 + 取十六进制文本s (字节值)
计次循环尾 ()
返回 (结果)
子程序名返回值类型公开备 注
取十六进制文本s文本型 
参数名类 型参考可空数组备 注
字节值整数型
返回 (取文本右边 (“0”取十六进制文本s (字节值), 2))
子程序名返回值类型公开备 注
十六进制到整数s整数型 
参数名类 型参考可空数组备 注
hex文本型
变量名类 型静态数组备 注
result整数型 
i整数型 
hex = 到大写 (hex)
result = 0
计次循环首 (取文本长度 (hex), i)
result = result × 16 + 寻找文本 (“0123456789ABCDEF”, 取文本中间 (hex, i, 1), , ) - 1
计次循环尾 ()
返回 (result)


i支持库列表   支持库注释   
dp1数据操作支持库一

评分

参与人数 1好评 +1 精币 +1 收起 理由
wanpl2006 + 1 + 1 华子

查看全部评分

回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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