har*_*lyd 9 mysql encryption-asymmetric public-key-encryption
我正在开发一个网络应用程序,用户需要提交他们的社会安全号码。
我想使用非对称密钥进行加密,这样即使网络服务器遭到破坏,私钥仍然是安全的。该应用程序不会在网络服务器上处理。
但是,应用程序需要能够知道 SSN 是否重复,A 不允许重复,B 允许用户返回其应用程序。
这可以做到吗?
使用类似于密码存储方式的单向哈希是否有意义,或者会损害数据吗?
因为只有大约。100 亿个 SSN。这是否会产生任何哈希算法。容易受到暴力攻击。盐在这里有用吗?如果盐是已知的,是不是仍然容易受到暴力破解的影响?是否可以正确隐藏盐,因为如果有人可以访问数据库,他们也可以访问盐?
听起来您应该对SSN进行哈希处理,而不是对其进行加密。两者之间的区别在于散列是单向的,而加密则不是。但由于您不需要验证数据的值,只需验证完整性,我肯定会使用哈希,因为
如果您使用 PHP 5 >= 5.5.0,我强烈建议使用 PHP内置的密码哈希函数。它经过了战斗测试,并针对这种情况而创建。它甚至自动生成自己的安全盐(但您仍然可以选择提供自己的盐)。
确保您仔细阅读有关密码哈希函数的文档,但下面是一个简短的示例(取自文档的示例):
<?php
// To create the password hash:
$ssn = password_hash($ssn, PASSWORD_DEFAULT);
// To verify the integrity of what the user is entering
// In this example, $hash is the hashed password generated from password_hash
if (password_verify('rasmuslerdorf', $hash)) {
echo 'SSN is valid!';
} else {
echo 'Invalid SSN.';
}
?>
Run Code Online (Sandbox Code Playgroud)
请记住检查有关密码哈希函数的文档,以便正确使用它们:
| 归档时间: |
|
| 查看次数: |
11785 次 |
| 最近记录: |