|
发表于 2025-4-22 17:59:26
|
显示全部楼层
四川省雅安市
大概就是这个样子没有验证过要用一个”支持库 eAPI”我没有这个东西所以没验证
.版本 2
.支持库 spec
.支持库 eAPI
.子程序 Decrypt, 文本型, 公开, 使用 AES CBC 模式解密数据
.参数 url, 文本型, , 用于生成密钥和 IV 的字符串,一般是接口地址
.参数 text, 文本型, , 加密后的密文
.局部变量 str_repeated, 文本型
.局部变量 org_key, 文本型
.局部变量 org_iv, 文本型
.局部变量 cipher_text, 字节集
.局部变量 decrypted, 字节集
.局部变量 result, 文本型
.局部变量 errorMsg, 文本型
' 检查 url 是否为字符串类型
如果 (取数据类型 (url) ≠ #文本型) 那么
返回 (“”)
结束如果
' 内部函数:生成 base64 编码并重复三次
.子程序 generate_key_iv, 文本型
.参数 s, 文本型
.局部变量 encoded, 文本型
' URI 编码后 base64 编码
encoded = 编码_base64 (编码_URL (s))
返回 (encoded + encoded + encoded)
结束子程序
' 生成密钥和初始向量
str_repeated = generate_key_iv (url)
' 从重复后的字符串中截取 key 和 iv
org_key = 取文本中间 (str_repeated, 1, 16) '前 16 字符作为密钥
org_iv = 取文本中间 (str_repeated, 12, 16) '第 12~28 字符作为初始向量(IV)
' 解密
尝试
'将密文从 base64 解码
cipher_text = 编码_base64 (text, 真)
' 创建解密器(这里使用系统 API 进行 AES CBC 解密,示例代码,可能需要进一步完善)
decrypted = AES_CBC_Decrypt (cipher_text, 到字节集 (org_key), 到字节集 (org_iv))
' 去除填充(简单示例,实际可能需要更完善的处理)
decrypted = 去除填充 (decrypted, 16)
' 转换为字符串
result = 到文本 (decrypted)
返回 (result)
捕获异常 (errorMsg)
调试输出 (“Decryption error: ” + errorMsg)
返回 (“”)
结束尝试
结束子程序
.子程序 AES_CBC_Decrypt, 字节集, 公开, AES CBC 模式解密,示例代码,可能需要进一步完善
.参数 密文, 字节集
.参数 密钥, 字节集
.参数 初始向量, 字节集
' 这里只是简单示例,实际使用中需要调用 Windows 系统的加密 API 实现 AES CBC 解密
' 例如使用 CryptEncrypt 和 CryptDecrypt 等函数,具体实现较为复杂
返回 ({})
结束子程序
.子程序 去除填充, 字节集, 公开, 简单的去除填充示例,实际可能需要更完善的处理
.参数 数据, 字节集
.参数 块大小, 整数型
.局部变量 填充长度, 整数型
填充长度 = 取字节集尾 (数据, 1)[1]
返回 (删去字节集尾 (数据, 填充长度))
结束子程序
.子程序 编码_URL, 文本型, 公开, 模拟 Python 的 urllib.parse.quote 功能
.参数 文本, 文本型
' 这里简单示例,实际可能需要更完善的 URL 编码处理
返回 (文本)
结束子程序
|
|