gpt4 book ai didi

php - PHP中的用户解密/加密|在 session 中存储 key

转载 作者:可可西里 更新时间:2023-11-01 01:02:21 25 4
gpt4 key购买 nike

所以我有了这个网站,让用户每天都可以写作。然后它以纯文本的形式存储在数据库中。这不是博客,所以一切都是私有(private)的,我经常收到的最大提示是“我”仍然可以阅读他们写的东西。它仍然不是“完全”私密的。我也不想成为泄露数千篇私有(private)日记的人。

所以这是我的思路,关于如何只对他们保密。

  • 当他们登录时:key = sha1(salt + password) 并将此 key 存储在 SESSION 中(这有多安全?)

  • 当他们保存他们的文本时:在将其保存到数据库之前用他们的 $_SESSION['key'] 加密

  • 当他们阅读他们保存的内容时,在显示之前使用他们的 $_SESSION['key'] 对其进行解密。

那安全吗?另外,加密/解密 UTF-8 的最佳方法是什么?

此外,如果有人更改其密码,它必须解密/重新加密所有内容。

最佳答案

您应该将密码的哈希存储在 SESSION 中。
永远不要在任何地方存储明文密码!

此外,请考虑阅读此 stackoverflow 线程:Secure hash and salt for PHP passwords

要散列密码,您可以使用这种方法:

  • 为特定用户生成盐(盐是随机字符串),并将其存储在某处,或生成全局盐(在您的用例中)
  • 使用以下函数为密码生成哈希,并将该哈希存储在 SESSION 中

function generate_hash($password) {
$salt = "<some random string of characters>"; // do not change it later.
return md5($salt . $password);
}

对于加密,您可以使用 mCrypt图书馆。一个典型的算法可以是:

$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';

$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

var_dump($encrypted);
var_dump($decrypted);

关于php - PHP中的用户解密/加密|在 session 中存储 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527561/

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