|

30精币
知道js这个解密函数,但是不知道怎么转换成易语言,有没有大神指导一下,谢谢、
[JavaScript] 纯文本查看 复制代码 function _F(A) {
// 将输入字符串 A 按冒号分割成数组 I
const I = A.split(":");
// 从数组 I 中取出第一个元素,将其作为十六进制字符串转换为 Buffer 类型,此为初始化向量(IV)
const B = Buffer.from(I.shift(), "hex");
// 将数组 I 中剩余的元素用冒号重新连接成字符串,再转换为 Buffer 类型,此为加密后的数据
const E = Buffer.from(I.join(":"), "hex");
// 使用 SHA - 256 算法对密钥 "a3wr4dfwh1q46iun40vgamk8owq3yplqazxvnr5" 进行哈希处理,得到 32 字节的密钥
const g = SI.createHash("sha256").update("a3wr4dfwh1q46iun40vgamk8owq3yplqazxvnr5").digest();
// 创建一个 AES - 256 - CBC 解密器实例,使用前面生成的密钥和 IV
const C = SI.createDecipheriv("aes-256-cbc", g, B);
// 对加密数据 E 进行部分解密
let Q = C.update(E);
// 完成解密操作,将剩余的数据解密并与之前部分解密的数据合并
Q = Buffer.concat([Q, C.final()]);
// 将解密后的 Buffer 数据转换为字符串并返回
return Q.toString();
}
需要解密的测试代码:“19a2d79f8028e4937bd903754a8c28eb:76f12baef8c0e993b599087befda02f643b3d823db569cf9823fa47255759607ea11cc74664d670cf1dc197e778457b51b66af6edc0ca0069a1f0c570325ccc7bf751b4fa948d3b6a55e4ec4497fdc257934ca615246926a7d79856c7b3c707f676fd696cdd9b7123d46d91e2051b328”
确实有点弄不懂。
尝试了以下方法,结果为空。
密匙 = GetSHA (“a3wr4dfwh1q46iun40vgamk8owq3yplqazxvnr5”, 5 )调试输出 (到文本 (密匙 )) 结果 = 对称解密 (到字节集 (“76f12baef8c0e993b599087befda02f643b3d823db569cf9823fa47255759607ea11cc74664d670cf1dc197e778457b51b66af6edc0ca0069a1f0c570325ccc7bf751b4fa948d3b6a55e4ec4497fdc257934ca615246926a7d79856c7b3c707f676fd696cdd9b7123d46d91e2051b328”), 密匙, #对称算法_AES_256_CBC, 65535, 到字节集 (“19a2d79f8028e4937bd903754a8c28eb”)) 调试输出 (到文本 (结果 )) 变量名 | 类 型 | 静态 | 数组 | 备 注 | 解密后的sn | 字节集 | | | 编码后的返回值 | 文本型 | | | 类型 | 短整数型 | | | 密钥容器 | 整数型 | | | 对象句柄 | 整数型 | | | 值 | 字节集 | | | 值长度 | 整数型 | | | Type | 整数型 | | |
解密后的sn = 到字节集 (文本 )类型 = 算法 判断 (类型 = 1 ) Type = #CALG_MD5 判断 (类型 = 2 ) Type = #CALG_MD2 判断 (类型 = 3 ) Type = #CALG_MD4 判断 (类型 = 4 ) Type = #CALG_SHA1 判断 (类型 = 5 ) Type = #CALG_SHA_256 判断 (类型 = 6 ) Type = #CALG_SHA_384 判断 (类型 = 7 ) Type = #CALG_SHA_512 判断 (类型 = 0 ) Type = #CALG_MD5 判断 (类型 > 7 或 类型 < 0 ) 返回 ({ 0 }) CryptAcquireContext (密钥容器, “”, “”, #PROV_RSA_AES, #CRYPT_VERIFYCONTEXT ) CryptHashData (对象句柄, 解密后的sn, 取字节集长度 (解密后的sn ), 0 ) CryptCreateHash1 (密钥容器, Type, 0, 0, 对象句柄 ) CryptHashData (对象句柄, 解密后的sn, 取字节集长度 (解密后的sn ), 0 ) CryptGetHashParam_ (对象句柄, #HP_HASHVAL, 0, 值长度, 0 ) 值 = 取空白字节集 (值长度 )CryptGetHashParam (对象句柄, #HP_HASHVAL, 值, 值长度, 0 ) CryptDestroyHash (对象句柄 ) CryptReleaseContext (密钥容器, 0 ) 返回 (值 )
|
|