Hash 梅克尔河豚&x2013;Damg和xE5;研发建设?

Hash 梅克尔河豚&x2013;Damg和xE5;研发建设?,hash,cryptography,blowfish,Hash,Cryptography,Blowfish,是否有一个库在Merkle–Damgård构造中使用河豚来构造加密哈希?我对密码哈希不感兴趣,但对通用加密哈希感兴趣。(在我们已经在使用Blowfish的应用程序中。)Blowfish用作哈希压缩函数是有问题的,原因如下: 首先,许多将分组密码转换为哈希函数的未中断方案产生的哈希长度与分组密码的块长度相同。对于只有64位块大小的Blowfish,这是不够的-64位哈希长度只提供32位的安全性,这是微不足道的 其次,所有的安全方案都改变了输入消息每个块上的分组密码密钥。Blowfish的密钥设置过

是否有一个库在Merkle–Damgård构造中使用河豚来构造加密哈希?我对密码哈希不感兴趣,但对通用加密哈希感兴趣。(在我们已经在使用Blowfish的应用程序中。)

Blowfish用作哈希压缩函数是有问题的,原因如下:

首先,许多将分组密码转换为哈希函数的未中断方案产生的哈希长度与分组密码的块长度相同。对于只有64位块大小的Blowfish,这是不够的-64位哈希长度只提供32位的安全性,这是微不足道的

其次,所有的安全方案都改变了输入消息每个块上的分组密码密钥。Blowfish的密钥设置过程非常慢,因此基于它的哈希也必然很慢


如果您仍然不害怕,请查找双块长度哈希结构,例如串联Davies Meyer和并列Davies Meyer。但是,我强烈建议您使用SHA-2系列函数的实现-这些函数也很容易找到,速度快,并且被认为是安全的。重新使用Blowfish作为散列函数,您将一无所获。

滚动您自己的加密是一个非常糟糕的主意。阅读它,大声重复它,然后再做一次

特别是对于散列函数。世界各地的密码学家目前正在设计一个新的哈希函数,通过。它始于2007年,预计将于2012年结束,数十名(更可能是数百名)专门从事密码设计的聪明人(读:博士及以上)都在努力工作。假设你能在几周内独自一人,在五年内比所有这些人做得更好,那就近乎荒谬了。事实证明,构建一个安全的哈希函数是一个困难的问题(从理论上讲,我们甚至不知道安全的哈希函数是否真的存在)。构建安全的分组密码非常容易


河豚的设计师(Bruce Schneier)是SHA-3的候选设计师之一。注意,他没有重复使用河豚。请注意,他还于1998年出版了分组密码,这是AES选择过程的候选,是Blowfish的高级继承者;Twofish比Blowfish更受关注,因此即使是对称加密,也不应该使用Blowfish,而应该使用Twofish(或者更好的是,使用AES,即“Rijndael”,它比Twofish更受欢迎)。

该库用于哪个平台?对不起,我应该更具体一些。我对在iPhone上使用它很感兴趣,但几乎任何C实现都会有所帮助。关键的部分是将河豚作为杂烩进行改编。找到并适应Blowfish的良好C实现并不是问题。“出了名的慢”有点言过其实:Blowfish密钥设置比加密一个块慢1000倍左右。对于散列函数,这意味着在速度非常快的PC上性能低于1 MB/s。这不仅仅是速度慢:这太荒谬了。谢谢你传播这个好消息。这个唱诗班不需要它,而且我受我无法控制的力量限制,只能使用64位键。不过,通过重用代码来节省一些空间可能会有所帮助,而在这种情况下,一个坏的散列并不是什么问题。