吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2692|回复: 23
上一主题 下一主题
收起左侧

[易语言 原创] 易语言 MD5 数据摘要模块

[复制链接]
跳转到指定楼层
楼主
爱飞的猫 发表于 2024-2-13 10:09 回帖奖励
本帖最后由 爱飞的猫 于 2024-3-26 10:27 编辑

虽然说 MD5 已经是一个「不能说是非常安全」的哈希数据摘要算法了,但国内很多地方还在用的样子。

参考了下述实现并魔改到易语言内联汇编(魔改教程):

提供了面向对象的「MD5数据摘要」类,可以免除手动管理内存地址;也提供了高级接口「数据校验_MD5_*」来根据自己需要手动调用过程。另外也提供了「取数据MD5」、「取文本数据MD5」、「取指针数据MD5」这三个简单的方法。

注意:这些公开方法返回均为 16 字节长度的「字节集」类型。如果需要十六进制文本,目前只在「MD5数据摘要::完成_十六进制」提供;其它函数的返回值需要使用者自行想办法转换。

易语言 MD5 数据摘要算法模块
~~~~~~~~~~~~~~~~~~~~~~~~~~~

  版本:

          v2024.0213.01

  说明:

    AES 实现基于下属实现魔改:
      - https://opensource.apple.com/source/ppp/ppp-37/ppp/pppd/md5.c.auto.html
      - https://github.com/Zunawe/md5-c/blob/f3529b6/md5.c
    只依赖核心支持库。

    测试于 易语言 5.1,理论上兼容后续版本的易语言。

  文件清单:

          - e-MD5.ec       编译好的 MD5 数据摘要算法模块。
          - demo-MD5.e     示例程序,演示了如何进行大文件的 MD5 计算。
          - DEMO 截图.png  可执行文件运行截图。
          - 说明.txt       你正在阅读的这个文档。
          - md5-cxx.zip    该压缩文件包含魔改后的对应 C++ 代码文件,
                           应使用 i686-w64-mingw32-g++ 编译。

  更新记录:

    - 20240326 - 修正 DEMO 程序中的文件尺寸转易读形式错误的问题。
    - 20240213 - 初版发布

  碎碎念:

    胶水写起来可真麻烦…

                                                        爱飞的猫
                                                      于 2024 春

压缩包内的 DEMO 程序是一个比较基础的演示程序,用于展示如何利用文件系统的接口以及模块来分段计算 MD5 数据摘要:

第二页是模块的导出信息,比较长就分开放了。



免费评分

参与人数 5威望 +1 吾爱币 +20 热心值 +5 收起 理由
happy851314 + 1 + 1 热心回复!
610100 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 1 + 15 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
laos + 1 + 1 我很赞同!
shengruqing + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| 爱飞的猫 发表于 2024-3-26 10:29 |楼主
20230713G001133 发表于 2024-3-25 21:14
为什么我传一个5206976680字节的文件显示 869M(应该是4.84 GB)

已修正。加了个专门的函数来显示预估大小:

.版本 2

.子程序 文件尺寸到易读尺寸, 文本型
.参数 字节数, 长整数型, , 字节数量
.局部变量 单位列表, 文本型, 静态, "0"
.局部变量 单位序号, 整数型
.局部变量 临时结果, 双精度小数型

.如果真 (取数组成员数 (单位列表) = 0)
    单位列表 = { “KiB”, “MiB”, “GiB”, “TiB”, “PiB”, “EiB”, “ZiB” }
.如果真结束
临时结果 = 到数值 (字节数)
.判断循环首 (临时结果 ≥ 1024)
    临时结果 = 临时结果 ÷ 1024
    单位序号 = 单位序号 + 1
.判断循环尾 ()
.如果真 (单位序号 = 0 或 单位序号 > 取数组成员数 (单位列表))
    返回 (到文本 (字节数) + “ 字节”)
.如果真结束
返回 (数值到格式文本 (临时结果, 2, 假) + “ ” + 单位列表 [单位序号])

没想到易语言的右移操作竟然不支持长整数型,白调用 API 获取文件大小了。还好读取文件是基于“是否读完”来检查的。

推荐
hdxzd12 发表于 2024-3-28 21:20

能不能直接这样写??


.版本 2
.支持库 spec

.子程序 _启动子程序, 文本型, , 本子程序在程序启动后最先执行
.局部变量 a, 文本型

a = 到文本 (5206976680 ÷ 1024 ÷ 1024 ÷ 1024)
返回 (取文本左边 (a, 寻找文本 (a, “.”, 1, 假) + 2))

点评

如果你显示的单位是固定值的话,可以  详情 回复 发表于 2024-3-28 22:31
3#
新泰强子 发表于 2024-2-13 10:28
4#
wyesheng 发表于 2024-2-13 16:20
我一直想着做个入门学习,奈何易语言我就是玩不明白,哭

点评

可以学别的 脚本语言可能没有中文,但有中文教程和更多人用  详情 回复 发表于 2024-2-14 22:34
5#
 楼主| 爱飞的猫 发表于 2024-2-14 22:34 |楼主
wyesheng 发表于 2024-2-13 16:20
我一直想着做个入门学习,奈何易语言我就是玩不明白,哭

可以学别的 脚本语言可能没有中文,但有中文教程和更多人用,也更容易上手
6#
wyesheng 发表于 2024-2-15 13:36
爱飞的猫 发表于 2024-2-14 22:34
可以学别的 脚本语言可能没有中文,但有中文教程和更多人用,也更容易上手

求指导,学哪个好点咯?
7#
geniusrot 发表于 2024-2-19 19:23
还行,算是挺快的,就是不知道稳定性怎么样,还没测试,比我现在用的快。10g文件耗时96秒,我用的117秒。py耗时157。node耗时224。
8#
happy851314 发表于 2024-2-29 11:54
谢谢分享
9#
hdxzd12 发表于 2024-3-25 21:14
本帖最后由 20230713G001133 于 2024-3-25 21:17 编辑

为什么我传一个5206976680字节的文件显示 869M(应该是4.84 GB)


点评

[md]已修正。加了个专门的函数来显示预估大小: ``` .版本 2 .子程序 文件尺寸到易读尺寸, 文本型 .参数 字节数, 长整数型, , 字节数量 .局部变量 单位列表, 文本型, 静态, "0" .局部变量 单位序号, 整数  详情 回复 发表于 2024-3-26 10:29
超过 4G 范围,文件大小未正常处理。我晚点更新下。  详情 回复 发表于 2024-3-25 21:16
10#
 楼主| 爱飞的猫 发表于 2024-3-25 21:16 |楼主
20230713G001133 发表于 2024-3-25 21:14
为什么我传一个5206976680字节的文件显示 869M(应该是4.84 GB)

超过 4G 范围,文件大小未正常处理。我晚点更新下。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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