PHP MD5与MySQL MD5的区别

3

我一直在想,让MySQL处理我的MD5哈希还是让PHP处理会更快?


1
这真的很重要吗?(即您是否需要在数十万或数百万行上执行此操作?) - Pekka
4
如果 md5 用于密码,不要考虑速度,考虑慢一些的加密方式(例如 bcrypt)! - Shef
@pekka,是的,它是针对数百万行的,我只是想研究一下MD5本身,并尝试一些有趣的事情。 - WojonsTech
@OZ_ 所以你指出了 SQL 服务器评估 SQL 字符串和连接时间等所需的时间。这是用于生成数据的本地服务器。 - WojonsTech
@WojonsTech 如果你知道答案,就不要问。 - OZ_
显示剩余3条评论
3个回答

4
实际上,我认为MySQL的MD5实现会更快。

PHP的本地md5()算法实现有些混乱。当使用PHP5进行MD5哈希时,建议使用hash('md5',$var);,这被证明更快。

不过最好自己进行基准测试。

请参阅此页面(底部评论)。

0.33311605453491: hash/md5
1.0671429634094: md5

我接下来会处理它,我只是想制作一个基本的暴力破解工具。只是为了展示为什么不要使用md5加密密码,这样他们在工作中可以去在线的md5生成器中生成密码,然后将其复制到我的代码中,我的数据库将列出匹配的密码。 - WojonsTech
我想最好总是使用hash()而不是md5。 - WojonsTech

2

仅就性能而言,不会有任何明显的差异(我认为mysql实现可能会快一点点)。

尝试使用结果更易读(因此更易于维护)的解决方案。对我来说,这意味着在php中进行哈希处理,但我不知道您的代码是什么样子的,所以让mysql来完成工作可能更容易。

附注:如果您要用于密码,请考虑使用另一种算法进行哈希处理(例如sha256)。有关更多信息,请查看维基百科并阅读有关碰撞的内容。


1
不用担心,我的密码系统包含512个哈希和盐。 - WojonsTech

1

做一些分析来找出问题所在。但如果你遇到了严重的性能问题,请记住80-20法则,最好首先找出瓶颈所在。

我的直觉是它们之间差别不大。个人认为应该将MD5与MySQL放在一起,让业务逻辑保持一致。


这是一个小的个人项目,不会花费太长时间,只需要几个小时,但是在我工作的地方,80-20规则确实让一些人感到困扰。 - WojonsTech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接