小编典典

如何安全有效地将SSN存储在数据库中?

sql

我的主要问题是,我想检查具有相同SSN的某人是否在我们这里有多个帐户。当前,所有个人身份信息都经过加密,解密需要很短的时间。

我最初的想法是在数据库的用户列中添加一个ssn列。然后,我可以简单地执行一个查询,使所有具有ssn或用户A的用户。

我不想将ssn以明文形式存储在数据库中。我当时只是想以某种方式加盐并对其进行哈希处理。

我的主要问题是,这是否安全(或安全性如何)?有什么简单的方法可以使用python进行盐和散列或加密和ssn?

编辑:不需要显示SSN。

这使用的是MySQL数据库。


阅读 51

收藏
2021-04-28

共1个答案

小编典典

不要加密SSN,当攻击者获得数据库时,他还将获得加密密钥。

仅使用哈希函数是不够的,仅添加盐就不足以提高安全性。

基本上以与密码相同的方式处理SSN。

而是使用随机盐对HMAC进行iItererate约100ms的持续时间,并将盐与哈希一起保存。使用的功能,例如PBKDF2(又名Rfc2898DeriveBytes),password_hash/
password_verifyBcrypt和类似的功能。关键是使攻击者花费大量时间通过蛮力查找密码。保护您的用户很重要,请使用安全的密码方法。

2021-04-28