易语言简单加密,求解密怎么写?

查看 45|回复 4
作者:270377132   
.版本 2
.子程序 加密, 字节集
.参数 被加密数据包, 字节集
.局部变量 数据段数, 整数型
.局部变量 加密数据, 字节集
.局部变量 变量数据, 整数型
.局部变量 临时字节1, 字节型
.局部变量 临时字节2, 字节型
.局部变量 临时字节3, 字节型
.局部变量 加密数据长度, 整数型
.局部变量 被加密数据长度, 整数型
被加密数据长度 = 取字节集长度 (被加密数据包)
数据段数 = (被加密数据长度 + 2) \ 3
被加密数据包 = 被加密数据包 + { 0, 0 }
加密数据长度 = 数据段数 × 4
加密数据 = 取空白字节集 (加密数据长度)
.计次循环首 (数据段数, 变量数据)
    临时字节1 = 被加密数据包 [变量数据 × 3 - 2]
    临时字节2 = 被加密数据包 [变量数据 × 3 - 1]
    临时字节3 = 被加密数据包 [变量数据 × 3]
    加密数据 [变量数据 × 4 - 3] = 位与 (临时字节1, 252) \ 4 + 60
    加密数据 [变量数据 × 4 - 2] = 位或 (位与 (临时字节1, 3) × 16, 位与 (临时字节2, 240) \ 16) + 60
    加密数据 [变量数据 × 4 - 1] = 位或 (位与 (临时字节2, 15) × 4, 位与 (临时字节3, 192) \ 64) + 60
    加密数据 [变量数据 × 4] = 位与 (临时字节3, 63) + 60
.计次循环尾 ()
.如果真 (数据段数 × 3 > 被加密数据长度)
    返回 (取字节集左边 (加密数据, 加密数据长度 - 数据段数 × 3 + 被加密数据长度))
.如果真结束
返回 (加密数据)

数据, 字节

gc588   

根据给出的加密代码,可以对应编写解密代码。具体思路是将加密操作中的位运算、位与(&)、位或(|)反着来一遍,把加密的过程逆推回去,从而得到解密的过程。
.版本 2
.子程序 解密, 字节集
.参数 加密数据包, 字节集
.局部变量 加密数据长度, 整数型
.局部变量 加密数据, 字节集
.局部变量 数据段数, 整数型
.局部变量 变量数据, 整数型
.局部变量 被加密数据长度, 整数型
.局部变量 被加密数据包, 字节集
.局部变量 临时字节1, 字节型
.局部变量 临时字节2, 字节型
.局部变量 临时字节3, 字节型
加密数据长度 = 取字节集长度 (加密数据包)
数据段数 = 加密数据长度 / 4
加密数据 = 取空白字节集 (加密数据长度)
.计次循环首 (数据段数, 变量数据)
    临时字节1 = 加密数据包 [变量数据 × 4 - 3]
    临时字节2 = 加密数据包 [变量数据 × 4 - 2]
    临时字节3 = 加密数据包 [变量数据 × 4 - 1]
    被加密数据包 [变量数据 × 3 - 2] = (位或 (位与 (临时字节1, 63) - 60, (位与 (临时字节2, 15) * 4)))
    被加密数据包 [变量数据 × 3 - 1] = (位或 (位与 (临时字节2, 240) / 16, (位与 (临时字节1, 3) * 16)))
    被加密数据包 [变量数据 × 3] = (位或 (位与 (临时字节3, 192) / 64, (位与 (临时字节2, 15) / 4)))
.计次循环尾 ()
如果真 (取字节集长度 (被加密数据包) > 0)
    如果真 (被加密数据包 [被加密数据长度 - 1] == 0)
        被加密数据包 = 取字节集左边 (被加密数据包, 被加密数据长度 - 1)
.如果真结束
返回 (被加密数据包)
将字节集进行解密后得到的还是字节集,具体转化为字符串需要看具体应用场景。
270377132
OP
  


gc588 发表于 2023-5-13 16:28
根据给出的加密代码,可以对应编写解密代码。具体思路是将加密操作中的位运算、位与(&)、位或(|)反着来 ...

谢谢老哥但是 提示错误呢
---------------------------
错误
---------------------------
运行时出错!
错误代码:1
错误信息:数组成员引用下标超出定义范围
运行时错误相关信息值(在IDE中打开对应源程序后执行"运行->到运行时错误相关位置"菜单功能查看): 67174439, 532
---------------------------
确定   
---------------------------
gc588   


270377132 发表于 2023-5-13 20:43
谢谢老哥但是 提示错误呢
---------------------------

.子程序 解密, 字节集
.参数 加密数据包, 字节集
.局部变量 数据段数, 整数型
.局部变量 解密数据, 字节集
.局部变量 变量数据, 整数型
.局部变量 临时字节1, 字节型
.局部变量 临时字节2, 字节型
.局部变量 临时字节3, 字节型
.局部变量 添加长度, 整数型
.局部变量 加密数据长度, 整数型
加密数据长度 = 取字节集长度 (加密数据包)
数据段数 = 加密数据长度 \ 4
解密数据 = 取空白字节集 (数据段数 × 3)
添加长度 = 0
.计次循环首 (数据段数, 变量数据)
    临时字节1 = 加密数据包 [变量数据 × 4 - 3] - 60
    临时字节2 = 加密数据包 [变量数据 × 4 - 2] - 60
    临时字节3 = 加密数据包 [变量数据 × 4 - 1] - 60
    解密数据 [变量数据 × 3 - 2] = 位或 (位与 (临时字节1, 252) × 4, 位与 (临时字节2, 60)) \ 16
    解密数据 [变量数据 × 3 - 1] = 位或 (位与 (临时字节2, 15) × 16, 位与 (临时字节3, 240) \ 4)
    解密数据 [变量数据 × 3] = 位或 (位与 (临时字节3, 15) × 64, 位与 (加密数据包 [变量数据 × 4], 63))
    如果 变量数据 = 数据段数 并且 添加长度 ≠ 0
        解密数据 = 取字节集左边 (解密数据, 添加长度)
    如果真结束
    如果 位与 (加密数据包 [变量数据 × 4], 192) > 0
        添加长度 += 1
    如果真结束
.计次循环尾 ()
返回 (解密数据)
试试这个吧,还不行的话我也没办法了
270377132
OP
  


gc588 发表于 2023-5-13 20:51
.子程序 解密, 字节集
.参数 加密数据包, 字节集
.局部变量 数据段数, 整数型

谢谢了,还是不行,,
您需要登录后才可以回帖 登录 | 立即注册

返回顶部