【问题标题】:Salt with using Mcrypt使用 Mcrypt 加盐
【发布时间】:2013-05-11 23:51:39
【问题描述】:

我正在尝试使用 Mcrypt 的 mcrypt_create_iv() 生成盐,但它似乎不起作用并且我遇到了错误。

这是我的代码:

<?php
$salt= substr(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM))(mt_rand()),0,22);

echo $salt;
?>

【问题讨论】:

  • 总是发布任何相关的错误或回溯。
  • 究竟是什么错误?
  • 解析错误:语法错误,第 4 行 /root/phptest/blowfish.php 中出现意外的 '('
  • 括号有问题。在运行之前始终进行语法检查。我建议使用具有语法检查功能的 IDE(例如 NetBeans)。
  • 你确定这个扩展开启了吗Mcript on PHP.net

标签: php salt


【解决方案1】:
$salt = substr( mcrypt_create_iv(16, MCRYPT_DEV_URANDOM), mt_rand( 0, 22 ) );

你有一些语法错误

【讨论】:

  • 无法解决此错误致命错误:在第 4 行的 /root/phptest/blowfish.php 中调用未定义函数 mcrypt_create_iv()
  • 抱歉无法正常工作 ether 收到此错误致命错误:在第 4 行的 /root/phptest/blowfish.php 中调用未定义函数 mcrypt_create_iv()
【解决方案2】:

这不起作用,您使用mcrypt_create_iv() 来获取随机字节,但这些不能用于 BCrypt 散列。问题是,mcrypt_create_iv 返回二进制数据,而 BCrypt 需要一个带有给定字母字符的盐。您必须将您的盐编码为这个字母表:./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzmt_rand() 函数在这里没用。

PHP 5.5 将有自己的函数 password_hash() 和 password_verify() 准备好,以简化生成 BCrypt 密码哈希。我强烈推荐使用这个优秀的 api,或者它的 compatibility pack 用于早期的 PHP 版本。用法很简单:

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 2013-12-28
    • 2011-08-21
    • 2012-08-11
    • 2011-01-27
    • 2015-11-10
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多