gpt4 book ai didi

php - 使用 PHP/mysql 进行简单、防弹的加密

转载 作者:行者123 更新时间:2023-11-30 23:12:44 24 4
gpt4 key购买 nike

我需要一种安全的方式将我的用户联系信息临时存储在 mysql 数据库中。

我不希望我的客户的敏感信息落入坏人之手,所以这就是我要找的:

  • 只有预期的收件人才能解密信息(用户名是唯一的并且可以用作签名/ key ?)
  • 加密必须完全在函数内处理,没有外部程序或服务,换言之,最终用户不可见。
  • 简单、无懈可击且易于理解,因为我远非安全专家,可能的漏洞可能会绕过我。

有没有人给我一些提示?要阅读的文章、我可以查看的框架甚至一些示例代码?非常感谢任何帮助。

最佳答案

嗯,这个问题其实是一个很好的问题。不过,有一种方法可以确保此类问题不会发生。但首先我想弄清楚哈希和加密之间的区别

散列是将主题转换为长散列。这是很难逆转的,需要大量资源才能做到。我们通常对密码等进行哈希处理。加密是当我们想要安全地存储数据但又希望能够取回它时,我们将它转​​换成另一个长的东西但我们也可以轻松地反转它(如果我们知道 key )

您可以使用所谓的“盐”来保护哈希值,例如您的密码,因为我们知道 Hash(x) 与 Hash(x+y) 有很大不同,所以我们可以使用它。虽然如果我是你我不会使用 MD5,但它仍然很棒但是已经看到了冲突(很多哈希算法都有它们,但是被发现会降低它们的安全性)。我推荐你使用 sha256/sha512。它们非常安全,到目前为止还没有发现已知的碰撞。

撇开我是个 Nerd ,你的问题很简单。我要使用 hash function of php在我的例子中。既然你说用户名是唯一的,你可以将它用于一个非常安全的散列系统

$password = YOUR_PASSWORD_HERE;
$username = USERNAME_OF_USER;
$safe_hash = hash("sha512",$password.$username);

这会合并两个用户名和密码,并使用 sha512 算法对它们进行哈希处理(如果需要,请更改算法)。这作为“密码”非常安全。“user1”具有与“密码”不同的唯一哈希值。“user2”

如果你想让它更安全,你可以添加其他东西,比如创建时间、姓氏、名字、手机号码、电子邮件、创建时间,任何你知道的,最好是真正独一无二的。

至于加密数据(以便您可以在需要时将其取回),您可以使用 mcrypt。您可以使用 mcrypt_encryptmcrypt_decrypt .您可以指定 cipher你想使用还有mode你想用。然后,当您想要取回数据时,您可以再次向 mcrypt 提供 key 、算法、模式和 mcrypt_encrypt 提供给您的无意义输出,您将获得原始数据。

我建议使用哈希来使用非常安全的 key ,因为很难对它们进行逆向工程。使用具有良好且唯一的字符串的 sha-256 哈希(我建议在哈希字符串中混合多条数据)将帮助您保护所需数据。

关于php - 使用 PHP/mysql 进行简单、防弹的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209129/

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