我正在使用 CodeIgniter,并正在创建用户需要登录的网站部分。我一直在阅读有关将密码存储为 MD5 哈希和使用盐的加密字符串的信息,但我没有看到任何关于解密的信息。
对密码尝试进行加密是否有效/安全,就像在存储密码以检查验证时的加密方式一样?
这是在 php 应用程序中存储密码还是使用 CodeIgniter 框架的推荐方法?
我正在使用 CodeIgniter,并正在创建用户需要登录的网站部分。我一直在阅读有关将密码存储为 MD5 哈希和使用盐的加密字符串的信息,但我没有看到任何关于解密的信息。
对密码尝试进行加密是否有效/安全,就像在存储密码以检查验证时的加密方式一样?
这是在 php 应用程序中存储密码还是使用 CodeIgniter 框架的推荐方法?
已经有 auth 库“准备就绪”(开箱即用),这里是另一个问题的链接,类似于这个
http://www.stackoverflow.com/questions/346980/how-should- i-choose-an-authentication-library-for-codeigniter
note我喜欢带有“组”的Tank Auth。
CodeIgniter 使用一个名为“Tank Auth”的库:http: //konyukhov.com/soft/tank_auth/ 它包含“PasswordHash.php”类:http: //bit.ly/1gahwtT
示例代码:
require "PasswordHash.php";
define("phpass_hash_portable",TRUE);
define("phpass_hash_strength",8);
$hasher = new PasswordHash(phpass_hash_strength,phpass_hash_portable);
if ($hasher->CheckPassword($password_to_check, $original_encoded_password)) {
echo "password correct";
} else {
echo "password incorrect";
}
您的答案上的两条评论显示了指向好的答案的链接,以添加更多内容。如果您只是喜欢散列,您也可以使用crypt。注意 crypt 不同于 mcrypt 曾经愚弄过我一次。可以在 laravel3 Hash class上找到 crypt 的示例。或者您也可以使用php pass,这是一个利用 OpenBSD 风格的基于 Blowfish 的 bcrypt 的库。
多亏了 cryptic,ircmaxell 也有一个哈希库在这里查看
不要使用 md5 或 base64。Sha1也坏了。最好使用 bcrypt。
您可以将此库与 codeigniter 一起使用来验证 bcrypt 密码
密码以散列格式存储,因为在大多数情况下不需要将它们恢复为原始字符串。md5 函数生成一个唯一的 32 个字母长的字符串,只需比较两个哈希值即可验证该字符串。要回答您的问题:
是的,这是保存密码的标准方法。
MD5 不再足够安全,所以大多数人开始使用 php哈希
当然,使用算法“sha512”和盐来发挥作用。
这个功能可能对你完全有用..
$this->load->library('encrypt');
$this->encrypt->sha1($yaourpassword);