增加md5输出的长度

时间:2019-11-17 03:50:53

标签: algorithm security hash reverse-engineering exploit

我有一个与某些旧哈希(例如MD5和SHA-1)有关的问题。两者都不是很安全,但是有什么方法可以增加输出长度吗? MD5的输出长度为32十六进制数字或16 bytes,我想将其扩展为18 bytes(例如)。

是否可以通过这种方式滥用标准算法?是否有任何攻击方法?某种价值溢出?

我是一个逆向工程文件,这对于理解其工作流程可能非常方便。该文件本身使用C ++中的CryptCreateHash函数进行哈希处理(如果有用的信息)

谢谢。

2 个答案:

答案 0 :(得分:2)

不,不是您可能要问的那样。哈希定义本身依赖于内部缓冲区的特定大小,并定义输出的大小。您不能将MD5输出延长到更长的时间,而不是再也不用了。

通常,您可以通过重复哈希并添加随机前缀来避免潜在的彩虹表,从而“加强”弱哈希。例如,在PBKDF2中,您仍然可以使用较旧的哈希值-但由于通常会使用盐,HMAC构造和许多哈希迭代,因此它比哈希本身难得多。例如,对于使用PBKDF2-HMAC-MD5进行了足够多次迭代的密码散列,我不会感到不安全。

PBKDF2也是一个很好的系统,用于将现有的哈希扩展为更大的输出-与您要的类似。

答案 1 :(得分:0)

Safe是相对的,例如使用MD5来确定应用程序中的任何文件是否需要更新(例如Steam验证缓存)是完全可以接受的。一般来说,修改加密标准绝不是一个好主意,特别是如果不是您的专业知识的话。您可以使用一些自定义加密,例如滚动xor键,然后使用MD5进行一些其他屏蔽。我有点困惑,为什么您要问这个问题,但要反转使用CryptCreateHash的二进制文件。