我的主要问题是,我想检查具有相同SSN的某人是否在我们这里有多个帐户。当前,所有个人身份信息都经过加密,解密需要很短的时间。
我最初的想法是在数据库的用户列中添加一个ssn列。然后,我可以简单地执行一个查询,使所有具有ssn或用户A的用户。
我不想将ssn以明文形式存储在数据库中。我当时只是想以某种方式加盐并对其进行哈希处理。
我的主要问题是,这是否安全(或安全性如何)?有什么简单的方法可以使用python进行盐和散列或加密和ssn?
编辑:不需要显示SSN。
这使用的是MySQL数据库。
不要加密SSN,当攻击者获得数据库时,他还将获得加密密钥。
仅使用哈希函数是不够的,仅添加盐就不足以提高安全性。
基本上以与密码相同的方式处理SSN。
而是使用随机盐对HMAC进行iItererate约100ms的持续时间,并将盐与哈希一起保存。使用的功能,例如PBKDF2(又名Rfc2898DeriveBytes),password_hash/ password_verify,Bcrypt和类似的功能。关键是使攻击者花费大量时间通过蛮力查找密码。保护您的用户很重要,请使用安全的密码方法。
PBKDF2
Rfc2898DeriveBytes
password_hash
password_verify
Bcrypt