gpt4 book ai didi

php - 加密 300 万条记录的最快方法

转载 作者:行者123 更新时间:2023-12-04 14:32:00 25 4
gpt4 key购买 nike

我们继承了一个系统,该系统有 300 万个用户登录,在 CSV 中分成 50 万个 block ,密码未经哈希处理。

客户反对建议,决定他想保留相同的密码,但只是为新系统散列它们,而不是强制用户设置新密码,所以请不要回复说“只是不要这样做”。

我们目前正在使用 PHP 处理文件以规范化数据并对现有字符串进行加密。

但是在 200 条记录上运行测试,当我们将 bcrypt 添加到循环中时,该过程需要大约 7 秒的时间。

随着时间的推移,这显然会显着增加。


有没有人有其他建议,我们可以如何更快地将字符串转换为 bcrypt?我在想也许有一个命令行工具,我们可以将 CSV 传递给它,它“知道第 4 列”是密码,并对其进行哈希处理,然后保存回文件或其他东西。

欢迎在这一点上提出任何建议。

值得一提的是,我们需要在发布当天重复此过程,因此需要适本地减少停机时间?

非常感谢


更新

对于那些感兴趣的人,在配备 2.6Ghz i7 和 8GB 内存的 2012 MBP 上,完成第一轮运行 6 个脚本实例需要 9 个小时,每个实例处理 50 万用户。

最佳答案

好吧,bcrypt 很慢这一事实是关键所在 - 它应该很慢才能使其更能抵抗暴力破解。

我能想到的只有几个选项:

  1. 分配任务并使用更多线程/处理器/计算机。

  2. 使用较低的“复杂性”因素。这将使哈希运算更快,但会在一定程度上降低哈希的安全性,因此不是一个很好的选择。

至于让流程在发布当天运行得更快以避免停机,这是我的建议:

  1. 现在对所有 250 万个帐户进行加密,并将 bcrypt 哈希与用户帐户一起存储在您的新系统中。

  2. 此外,计算密码的简单 SHA 哈希值,并将其与关联的用户 ID 一起离线存储在文件中。

  3. 在上线当天,再次从遗留系统中获取所有帐户。对于在步骤 1 之后创建的新帐户,使用 Bcrypt 哈希在新系统中创建帐户。对于其他帐户,请检查 SHA 哈希(快速计算)是否与您在步骤 2 中创建的文件中的 SHA 哈希匹配。如果不匹配,请重新加密密码并更新新系统。如果它们匹配,则无需再次加密。

关于php - 加密 300 万条记录的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com