2013-06-13 46 views
2

我需要做一些用户验证的东西,涉及存储密码摘要。 我选择了sha256,但md5会做的诀窍,因为它只是一个学习项目,安全性不是什么大问题。哈斯克尔消化库

我的问题是关于数百个不同的加密和哈希库,并保持理智选择正确的。

我已经通过hackage:一些图书馆快,但也不是“纯粹”,一些“纯唯快不...等与其他的优点和缺点

你们会用哪一个SHA256。密码哈希?

例如,我发现Crypto.Hash.SHA256和Data.Digest.Pure.SHA。 哪一个更理想,是什么,如果任何区别?

谢谢。

回答

3

Data.Digest.Pure.SHA,来自Adam的SHA包,仅用Haskell编写(因此模块名称中的'Pure'),但是iirc不是那么快。 Crypto.Hash.SHA256来自文森特的cipherhash包,它是一个快速C实现的绑定。

cipherhash的C绑定没有什么问题 - 它不是不纯的,它不会破坏引用透明性,它只是在构建pureMD5时挑选了一个错误的模块名称,并且设置了一个先例。

编辑: 无论哪种方式,性能可能不是你主要关心的,所以两者都很好。此外,简单地散列密码通常是一个坏主意。考虑使用含盐的HMAC或看看pbkdf2。

+0

谢谢托马斯,我在做哈希之前加盐。我只是创建一个随机20个字符的字符串,然后将其附加到密码,然后只有它散列它。 –

+1

这还不够。 HMAC与你正在做的不同。故意缓慢的哈希,如PBKDF2,最适合密码。 – 2013-06-13 05:25:52

+0

是的,简单的散列+盐和实际的密钥导出函数之间存在着差异。 – Wes