|
本帖最后由 QAQ 于 2018-9-29 16:57 编辑
- .版本 2
- .支持库 dp1
- .程序集 文件MD5计算
- .程序集变量 AA, 整数型
- .程序集变量 BB, 整数型
- .程序集变量 CC, 整数型
- .程序集变量 DD, 整数型
- .程序集变量 百分比, 双精度小数型
- .程序集变量 旧百分比, 双精度小数型
- .程序集变量 百分比时间, 双精度小数型
- .程序集变量 旧百分比时间, 双精度小数型
- .程序集变量 百分比显示, 逻辑型
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 长度, 整数型
- .局部变量 字节集, 字节集
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- 百分比显示 = 假
- .计次循环首 (1000, 长度)
- 字节集 = 随机字节集 (长度)
- .如果真 (MD5_字节集 (字节集) ≠ 取数据摘要 (字节集))
- 暂停 ()
- .如果真结束
- .计次循环尾 ()
- 输出调试文本 (“完成”)
- 百分比显示 = 真
- 输出调试文本 (MD5_文件 (“D:\file.bin”))
- .子程序 MD5_文件, 文本型, 公开, 计算一个文件的MD5
- .参数 文件名, 文本型, , 提供文件名以及路径,最大2147483647字节
- .局部变量 文件号, 整数型
- .局部变量 长度, 整数型
- .局部变量 块数, 整数型
- .局部变量 计数, 整数型
- .局部变量 MD5块, 字节集
- .局部变量 MD5整数块, 整数型, , "16"
- .局部变量 块计数, 整数型
- .局部变量 索引位置, 整数型
- .局部变量 时间, 整数型
- 长度 = 取文件尺寸 (文件名)
- .如果真 (长度 < 0)
- 输出调试文本 (“获取文件尺寸失败”)
- 返回 (“”)
- .如果真结束
- 文件号 = 打开文件 (文件名, 1, 3)
- .如果真 (文件号 = 0)
- 输出调试文本 (“打开文件失败”)
- 返回 (“”)
- .如果真结束
- .如果真 (百分比显示)
- 百分比 = 0
- 旧百分比 = 0
- 百分比时间 = 0
- 旧百分比时间 = 取启动时间 ()
- .如果真结束
- 块数 = 计算块数 (长度)
- MD5初始化 ()
- .计次循环首 (块数, 计数)
- MD5块 = MD5_读文件块 (文件号, 计数, 块数, 长度)
- 索引位置 = 1
- .计次循环首 (16, 块计数)
- MD5整数块 [块计数] = 取字节集数据 (MD5块, 3, 索引位置)
- .计次循环尾 ()
- 主要循环 (MD5整数块)
- .计次循环尾 ()
- 返回 (级联 (AA, BB, CC, DD))
- .子程序 MD5_字节集, 文本型
- .参数 字节集, 字节集
- .局部变量 文件名, 文本型
- .局部变量 返回值, 文本型
- 文件名 = 取临时文件名 ()
- 写到文件 (文件名, 字节集)
- 返回值 = MD5_文件 (文件名)
- 删除文件 (文件名)
- 返回 (返回值)
- .子程序 MD5初始化
- AA = 1732584193
- BB = -271733879
- CC = -1732584194
- DD = 271733878
- .子程序 MD5_读文件块, 字节集, , 自带填充 返回固定64字节
- .参数 文件号, 整数型
- .参数 块, 整数型
- .参数 块数, 整数型
- .参数 长度, 整数型
- .局部变量 字节集, 字节集
- .局部变量 位长, 长整数型
- .局部变量 读到的长度, 整数型
- .局部变量 百分比耗时, 整数型
- .局部变量 剩余时间, 整数型
- 位长 = 长度 × 8
- .如果真 (百分比显示)
- 百分比 = 块 ÷ 块数 × 100
- .如果真 (取整 (百分比) ≠ 取整 (旧百分比))
- 百分比时间 = 取启动时间 ()
- 百分比耗时 = 百分比时间 - 旧百分比时间
- 剩余时间 = 100 × 百分比耗时 - 百分比 × 百分比耗时
- 输出调试文本 (“已完成 ” + 到文本 (百分比) + “% 大约剩余 ” + 到文本 (剩余时间 ÷ 1000) + “ 秒完成。”)
- 旧百分比时间 = 百分比时间
- .如果真结束
- 旧百分比 = 百分比
- .如果真结束
- 字节集 = 读入字节集 (文件号, 64)
- 读到的长度 = 取字节集长度 (字节集)
- .判断开始 (读到的长度 < 64 且 块数 ≠ 块)
- 字节集 = 字节集 + 取空白 (64 - 读到的长度, 真)
- .判断 (块数 = 块 且 读到的长度 = 0)
- 字节集 = 字节集 + 取空白 (56 - 读到的长度, 右移 (位与 (长度, 63), 3) ≠ 7) + 到字节集 (位长)
- .判断 (块数 = 块)
- 字节集 = 字节集 + 取空白 (56 - 读到的长度, 真) + 到字节集 (位长)
- .默认
- .判断结束
- 返回 (字节集)
- .子程序 计算填充长度, 整数型
- .参数 填充前长度, 整数型
- 返回 (右移 (填充前长度 + 8, 6) × 64 + 64)
- .子程序 计算块数, 整数型
- .参数 填充前长度, 整数型
- 返回 ((填充前长度 + 8) \ 64 + 1)
- .子程序 循环左移, 整数型
- .参数 欲移动的整数, 整数型
- .参数 欲移动的位数, 字节型
- 置入代码 ({ 139, 69, 8, 138, 77, 12, 211, 192, 201, 195 })
- ' mov eax,[ebp+8]
- ' mov cl,[ebp+12]
- ' rol eax,cl
- ' leave
- ' ret
- 返回 (0)
- .子程序 F, 整数型
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 返回 (位或 (位与 (X, Y), 位与 (位取反 (X), Z)))
- .子程序 G, 整数型
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 返回 (位或 (位与 (X, Z), 位与 (Y, 位取反 (Z))))
- .子程序 H, 整数型
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 返回 (位异或 (X, Y, Z))
- .子程序 I, 整数型
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 返回 (位异或 (Y, 位或 (X, 位取反 (Z))))
- .子程序 FF
- .参数 a, 整数型, 参考
- .参数 b, 整数型
- .参数 c, 整数型
- .参数 d, 整数型
- .参数 Mj, 整数型
- .参数 s, 整数型
- .参数 ti, 整数型
- a = b + 循环左移 (a + F (b, c, d) + Mj + ti, s)
- .子程序 GG
- .参数 a, 整数型, 参考
- .参数 b, 整数型
- .参数 c, 整数型
- .参数 d, 整数型
- .参数 Mj, 整数型
- .参数 s, 整数型
- .参数 ti, 整数型
- a = b + 循环左移 (a + G (b, c, d) + Mj + ti, s)
- .子程序 HH
- .参数 a, 整数型, 参考
- .参数 b, 整数型
- .参数 c, 整数型
- .参数 d, 整数型
- .参数 Mj, 整数型
- .参数 s, 整数型
- .参数 ti, 整数型
- a = b + 循环左移 (a + H (b, c, d) + Mj + ti, s)
- .子程序 II
- .参数 a, 整数型, 参考
- .参数 b, 整数型
- .参数 c, 整数型
- .参数 d, 整数型
- .参数 Mj, 整数型
- .参数 s, 整数型
- .参数 ti, 整数型
- a = b + 循环左移 (a + I (b, c, d) + Mj + ti, s)
- .子程序 主要循环
- .参数 x, 整数型, 参考 数组
- .局部变量 A, 整数型
- .局部变量 B, 整数型
- .局部变量 C, 整数型
- .局部变量 D, 整数型
- A = AA
- B = BB
- C = CC
- D = DD
- FF (A, B, C, D, x [1], 7, -680876936)
- FF (D, A, B, C, x [2], 12, -389564586)
- FF (C, D, A, B, x [3], 17, 606105819)
- FF (B, C, D, A, x [4], 22, -1044525330)
- FF (A, B, C, D, x [5], 7, -176418897)
- FF (D, A, B, C, x [6], 12, 1200080426)
- FF (C, D, A, B, x [7], 17, -1473231341)
- FF (B, C, D, A, x [8], 22, -45705983)
- FF (A, B, C, D, x [9], 7, 1770035416)
- FF (D, A, B, C, x [10], 12, -1958414417)
- FF (C, D, A, B, x [11], 17, -42063)
- FF (B, C, D, A, x [12], 22, -1990404162)
- FF (A, B, C, D, x [13], 7, 1804603682)
- FF (D, A, B, C, x [14], 12, -40341101)
- FF (C, D, A, B, x [15], 17, -1502002290)
- FF (B, C, D, A, x [16], 22, 1236535329)
- GG (A, B, C, D, x [2], 5, -165796510)
- GG (D, A, B, C, x [7], 9, -1069501632)
- GG (C, D, A, B, x [12], 14, 643717713)
- GG (B, C, D, A, x [1], 20, -373897302)
- GG (A, B, C, D, x [6], 5, -701558691)
- GG (D, A, B, C, x [11], 9, 38016083)
- GG (C, D, A, B, x [16], 14, -660478335)
- GG (B, C, D, A, x [5], 20, -405537848)
- GG (A, B, C, D, x [10], 5, 568446438)
- GG (D, A, B, C, x [15], 9, -1019803690)
- GG (C, D, A, B, x [4], 14, -187363961)
- GG (B, C, D, A, x [9], 20, 1163531501)
- GG (A, B, C, D, x [14], 5, -1444681467)
- GG (D, A, B, C, x [3], 9, -51403784)
- GG (C, D, A, B, x [8], 14, 1735328473)
- GG (B, C, D, A, x [13], 20, -1926607734)
- HH (A, B, C, D, x [6], 4, -378558)
- HH (D, A, B, C, x [9], 11, -2022574463)
- HH (C, D, A, B, x [12], 16, 1839030562)
- HH (B, C, D, A, x [15], 23, -35309556)
- HH (A, B, C, D, x [2], 4, -1530992060)
- HH (D, A, B, C, x [5], 11, 1272893353)
- HH (C, D, A, B, x [8], 16, -155497632)
- HH (B, C, D, A, x [11], 23, -1094730640)
- HH (A, B, C, D, x [14], 4, 681279174)
- HH (D, A, B, C, x [1], 11, -358537222)
- HH (C, D, A, B, x [4], 16, -722521979)
- HH (B, C, D, A, x [7], 23, 76029189)
- HH (A, B, C, D, x [10], 4, -640364487)
- HH (D, A, B, C, x [13], 11, -421815835)
- HH (C, D, A, B, x [16], 16, 530742520)
- HH (B, C, D, A, x [3], 23, -995338651)
- II (A, B, C, D, x [1], 6, -198630844)
- II (D, A, B, C, x [8], 10, 1126891415)
- II (C, D, A, B, x [15], 15, -1416354905)
- II (B, C, D, A, x [6], 21, -57434055)
- II (A, B, C, D, x [13], 6, 1700485571)
- II (D, A, B, C, x [4], 10, -1894986606)
- II (C, D, A, B, x [11], 15, -1051523)
- II (B, C, D, A, x [2], 21, -2054922799)
- II (A, B, C, D, x [9], 6, 1873313359)
- II (D, A, B, C, x [16], 10, -30611744)
- II (C, D, A, B, x [7], 15, -1560198380)
- II (B, C, D, A, x [14], 21, 1309151649)
- II (A, B, C, D, x [5], 6, -145523070)
- II (D, A, B, C, x [12], 10, -1120210379)
- II (C, D, A, B, x [3], 15, 718787259)
- II (B, C, D, A, x [10], 21, -343485551)
- AA = AA + A
- BB = BB + B
- CC = CC + C
- DD = DD + D
- .子程序 级联, 文本型
- .参数 值1, 整数型
- .参数 值2, 整数型
- .参数 值3, 整数型
- .参数 值4, 整数型
- .局部变量 数据, 字节集
- .局部变量 计数, 整数型
- .局部变量 十六进制文本, 文本型
- .局部变量 返回值, 文本型
- 数据 = 到字节集 (值1) + 到字节集 (值2) + 到字节集 (值3) + 到字节集 (值4)
- 十六进制文本 = “0123456789abcdef”
- 返回值 = “”
- .计次循环首 (16, 计数)
- 返回值 = 返回值 + 取文本中间 (十六进制文本, 右移 (数据 [计数], 4) + 1, 1) + 取文本中间 (十六进制文本, 位与 (数据 [计数], 15) + 1, 1)
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 随机字节集, 字节集
- .参数 长度, 整数型
- .局部变量 返回值, 字节集
- .局部变量 计数, 整数型
- 返回值 = 取空白字节集 (长度)
- .计次循环首 (长度, 计数)
- 返回值 [计数] = 取随机数 (, )
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 取空白, 字节集
- .参数 长度, 整数型
- .参数 置128, 逻辑型, 可空
- .局部变量 返回值, 字节集
- 返回值 = 取空白字节集 (长度)
- .如果真 (置128)
- 返回值 [1] = 128
- .如果真结束
- 返回 (返回值)
复制代码
|
评分
-
1
查看全部评分
-
|