gpt4 book ai didi

mysql - 替代散列 SSN 作为 MySQL 中的 key

转载 作者:行者123 更新时间:2023-11-29 04:11:13 31 4
gpt4 key购买 nike

我遇到了类似下面的问题:

某人开始担任“A 公司”的顾问。他们的人力资源人员为他们设立了一个账户。在“人员”表和“人员-公司”表中为人员创建记录。

此人还为“B 公司”工作(A 公司可能知道也可能不知道)。当 B 公司输入他们的信息时,他们不应在“个人”中创建记录,而应在“个人-公司”中创建记录。

此人需要为国家进行培训,因此如果他们在进行培训时登录到任一公司的网站,我们希望总时数保留在该人身上。

我可以为人员表设置一个 PK,将他们加入每家公司,但我认为我需要类似人员 SSN 的散列值,并附加一些额外的“xyz”才能进行查找。 B 公司会有此人的 SSN,这应该是通用的。

问题:

1) 有没有其他你们认为效果更好的加入方法?

2) 如果我确实采用散列 SSN 方法,那么用于 MySQL/PHP 的单向加密的最佳加密是什么?

我在别处读到公钥/私钥解决方案可能是最好的,但由于该人最初没有设置自己的帐户,我不确定这将如何工作。

谢谢

最佳答案

我认为this article可能与您正在做的事情非常相关。如果出于安全原因和法律责任,您确实希望“匿名化”SSN,那么简单地散列它们是不够的。

只是散列它们将是一个完全确定性的过程,因此要有效地“屏蔽”单个 SSN,该过程需要随机化。否则,您可以简单地通过所有可能的 SSN 组合进行暴力破解(这比尝试暴力破解哈希函数所需的工作要少得多)并寻找匹配值。

要了解为什么这成立,请举一个最简单的例子,即 SSN 可以只取两个值,0 和 1。不管哈希函数的质量和强度如何,最终只会有两种可能的结果,它是很容易看出哪个是哪个。

这是为什么你不应该散列的老游戏直接输入密码而不先对它们进行一些预处理。底层数据不包含足够的熵,因此很容易成为在预先计算的表中查找的目标。

一旦您的 SSN 变得私密和 secret (它们并非在每个国家/地区都存在,请原谅我在评论中提出的愚蠢问题 :),同样用于密码存储的最佳实践也应该适用于您的特定情况,即补偿初始熵不足的缓慢自适应哈希算法,例如 bcrypt、scrypt 和 PBKDF2(Marcus Adams 已经推荐)。

关于mysql - 替代散列 SSN 作为 MySQL 中的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486025/

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