我见过公共web使用keedd-md5生成消息身份验证代码,而不是采用HMAC算法。人们不会仅仅为了好玩而发明HMAC,所以它肯定比关键的MD5有一些优势。(但是,我们确实有一个在MD5中描述的密钥化的RFC 1828身份验证标准。)与HMAC相比,键控MD5算法是否存在已知的漏洞?
来自RFC 1828 - IP身份验证使用键控MD5:
The form of the authenticated message is
key, keyfill, datagram, key, MD5fill
echo -n终端上的手册页如下:
-n Do not print the trailing newline character. This may also be
achieved by appending `\c' to the end of the string, as is done by
iBCS2 compatible systems. Note that this option as well as the
effect of `\c' are implementation-defined in IEEE St
因此,我对md5进行了研究,找到了PieSub引用MD5生成代码的;
@echo off
for /r %%f in (*) do md5.exe %%f >> output.txt
当我试图为某个目录中的文件生成md5代码时,这个批处理(md5.bat)被放在结果中,如下所示;
8232D53AB6DF337DC341A589EF1FA687 C:\Users\User\Downloads\md5\index.html
695D352F6D8974463855443E83B6F000 C:\Users\User\Downloads\md5\main.c
6C35472B8
我正在使用MD5算法来散列磁盘上哈希表的键(我知道这是否是最好的算法还值得怀疑,但我现在还是使用它。这个问题可以推广到产生字节数组的任何算法)。我的问题是:
哈希码的大小决定了哈希表中组合(桶)的数量。由于MD5是128位的,所以有大量的组合(~ 3.4e38),这对我的目的来说太大了。所以我想做的是提取MD5产生的字节数组的前n位,并将它们转换成一个长(或ulong)值。由于MD5生成一个字节数组,如果我想要一个整数字节数组,这将很容易做到,但这会导致组合数量的跳跃太大。我发现单比特版本要复杂得多。
目标:
n = 10 // I.e. I want 2^10 combinations
l
在我已经安装的Ubuntu服务器上正确安装md5节点模块时,我遇到了一些问题。
(它在我的本地windows机器上运行得很好,我可以在dev服务器上安装npm的其他模块。)
当我尝试启动NodeJS应用程序时,我正在处理它失败,说明md5模块没有安装。
// trying to start my application that depends on md5.
drichardson@devwebserver:/var/www/node_app/meanapp$ node server.js
module.js:340
throw err;