[原创]让MD5算法飞起来(已改进)
本帖最后由 baitang36 于 2022-10-7 09:45 编辑lsp版的MD5算法速度很慢,被很多人诟病,能不能优化一下,提高一下速度呢?
yc-MD5.lsp是从论坛找到的lsp版MD5算法源码,改来改去,速度提升微乎其微。看来需要另找出路。
lsp版MD5的问题在于用lsp去造轮子,通过lsp语句来实现MD5。
经过搜索发现,windows内核有MD5算法,也就是说它提供了MD5算法的api,只要调用就可以了,没必要自己造轮子。
syz-md5.fas是用纯lsp调用系统api实现的,32位和64位通用,用法是加载后 (syz-md5 "字符串"),返回值是字符串的MD5值字符串,速度可以用飞快来形容。我的测试,做500次MD5计算,yc-md5程序用时14.15秒;syz-md5程序用时0.032秒,速度相差400倍。
tt5.lsp是测试程序。
命令: (LOAD "D:/aa/tt5.lsp") C:TT5
命令: tt5
yc-md5程序共用时7.327秒
syz-md5程序共用时0.017秒。这是另一台电脑的速度。
命令: (syz-md5 "PC5689756312855546")
"f6209d14a9c3342f467b75a7cc15f5ed"
感谢hn10183051和烟盒迷唇两位大侠发现bug,附件已修正。请朋友们重新下载
bug发生的原因:itoa会丢掉数字前面的0,这样就导致07变成7了,丢了个0. 用保留函数的itoa解决了这个问题(itoa 7 16 2 48)返回“07”
为修正第一次bug,又犯了个低级错误,导致第二个bug。
纯lsp调用系统api的技术由于给我的客户用于读写专业加密锁,为了他们的代码安全,不方便公开syz-md5.fas源码,希望朋友们谅解,感兴趣者可以加我qq私聊。
baitang36 发表于 2022-10-6 13:52
下载不了?试试这个
还是下不了,
神作啊,可谓是求而不得,人生一大遗憾。占用老师一点时间,可以发qq82568456吗 本帖最后由 cchessbd 于 2022-10-6 16:54 编辑
烟盒迷唇 发表于 2022-10-6 16:25
还是有BUG,出来的结果都不一样
(syz-md5 "PC5689756312855546") 出来:"6f093128af72e70ab8bca1dd3d66345 ...
哦,这样啊。那我还是保存上次的旧版本了。
试了旧版本的,2次计算值是不一样。
我又试了下lee mac的md5,他的值和以上的又不一样。
我又拿一个windows的md5计算工具比较了一下。YC-MD5和这个工具的结果一样,应该是对的。
其他2个估计都不对。
还是有BUG,出来的结果都不一样
(syz-md5 "PC5689756312855546") 出来:"6f093128af72e70ab8bca1dd3d66345b"
(YC-MD5 "PC5689756312855546")出来:"f6209d14a9c3342f467b75a7cc15f5ed" 哥。。。赞!!
支持~ 好东西,我来试试看 大师又出精品了 tomonkey239 发表于 2022-9-30 08:59
大师又出精品了
一个试验,和大家共享
大师又出精品了,收藏起来
哥。。。赞!!
支持~ 我只有一句 盛老师666 我只有一句 盛老师666 666 感谢大佬共享!