gpt4 book ai didi

php - 如何安全地加密密码

转载 作者:行者123 更新时间:2023-12-04 05:22:14 24 4
gpt4 key购买 nike

首先,我想重申一下,我不是在问如何对密码进行哈希处理(例如 salting/bcrypt/等)。对于我完成的每个其他项目,我总是对密码进行散列/加盐处理,但在这种情况下,我需要暂时重新获得密码。

基本上,我需要在我的数据库中存储一个密码,然后再次访问它。在 codeigniter(我使用的框架)中,他们使用 mcrypt 和一个 key (他们建议长度应该是 32 个字符)。这样就够了吗?

编辑 :

询问的原因:我需要能够向用户发送关键任务敏感 PDF 并希望对他们进行密码保护(最好使用相同的密码)。

在与 SO 和 off 的人讨论之后,我得出的结论是,您永远不应该加密密码并始终对其进行散列/加盐。想想有多少人为不同的服务使用相同的密码/电子邮件。因此,我得出的结论是,如果您确实需要加密一个项目,您应该使用单独的 PIN 或其他非必要项目。

然而,即使我要走 pin 路线并保持密码散列,我仍然很好奇你理论上会如何解决这个问题。

最佳答案

是的,只要您对 SALT 值保密。

更新:似乎人们对简单的答案不满意。通过使用 mcrypt扩展,你可以用一个特定的 secret 值来加密你的数据 SALT .如果人们不知道 SALT,他们就无法解密该值。

示例:

<?php 
define('SALT', 'whateveryouwant');

function encrypt($text)
{
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SALT, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}

function decrypt($text)
{
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SALT, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
?>

当然,如果您想要额外的安全性,请考虑使用公钥基础设施。

关于php - 如何安全地加密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577150/

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