Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 椒盐密码是否算作96位加密?_Php_Security_Encryption_Passwords_Md5 - Fatal编程技术网

Php 椒盐密码是否算作96位加密?

Php 椒盐密码是否算作96位加密?,php,security,encryption,passwords,md5,Php,Security,Encryption,Passwords,Md5,我已经创建了一个盐和胡椒密码加密代码。我认为这是加密密码的好方法,但这是什么加密级别 我最初认为“位”部分是使用的字符长度,但我知道这是不正确的。这将是多少位加密 PHP function _h() { $result = ""; $charPool = '0123456789abcdefghijklmnopqrstuvwxyz'; for($p = 0; $p<32; $p++) $result .= $charPool[mt_rand(0,strlen($charP

我已经创建了一个盐和胡椒密码加密代码。我认为这是加密密码的好方法,但这是什么加密级别

我最初认为“位”部分是使用的字符长度,但我知道这是不正确的。这将是多少位加密

PHP

function _h() {
  $result = "";
  $charPool = '0123456789abcdefghijklmnopqrstuvwxyz';
  for($p = 0; $p<32; $p++)
    $result .= $charPool[mt_rand(0,strlen($charPool)-1)];
  return md5(sha1(md5(sha1($result))));
}

$salt = _h();
$pepper = _h();
$pass = $salt.md5($salt.md5($_POST['password']).$pepper).$pepper;
函数{
$result=“”;
$charPool='0123456789abcdefghijklmnopqrstuvxyz';

对于($p=0;$p来说,使盐和胡椒粉的计算复杂化是没有用的。毕竟,任务不是检索最初用来生产这些香料的东西,而是计算
$\u POST('a']
的值,然后你把
$salt
$pepper
作为前缀/后缀(否则,您以后无法使用存储的值验证此哈希的输入密码)也就是说,按照@zneak的评论去做,并使用一个专家库函数。

让盐和peppr的计算变得太复杂是没有用的。毕竟,任务不是检索最初用来生产这些香料的东西,而是分析
$的价值('a']
并且您将
$salt
$pepper
作为前缀/后缀(否则您以后无法使用存储的值来验证此散列的输入密码)。也就是说,按照@zneak的评论操作,并使用专家库函数。

对密码进行散列的方案存在很多问题

PHP 5.5将有自己的函数password_hash()和password_verify(),以简化BCrypt密码哈希的生成。我强烈建议使用这个优秀的api,或者它适用于早期的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);
这些功能将解决以下问题:

  • 他们使用了一个缓慢的自适应哈希函数(BCrypt),MD5对于哈希密码来说太快了
  • 它们从操作系统的随机源生成安全的盐

  • 胡椒不仅仅是第二种盐,与盐相比,胡椒是秘密的,不会与哈希一起存储。通常所有密码都会使用相同的胡椒。

    对密码进行哈希的方案存在很多问题

    PHP 5.5将有自己的函数password_hash()和password_verify(),以简化BCrypt密码哈希的生成。我强烈建议使用这个优秀的api,或者它适用于早期的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);
    
    这些功能将解决以下问题:

  • 他们使用了一个缓慢的自适应哈希函数(BCrypt),MD5对于哈希密码来说太快了
  • 它们从操作系统的随机源生成安全的盐

  • 胡椒不仅仅是第二种盐,与盐不同的是,胡椒是秘密的,不会与散列一起存储。通常所有密码都使用相同的胡椒。

    它是已知的(只需搜索SE即可),所以很容易损坏。永远不要把安全问题留给非专家的人。如果你自己不是专家,就用专家的作品——例如,(
    crypt
    crypt_-BLOWFISH
    )。那不是加密,那是散列。这也散发着货物崇拜密码术的味道。“sha很弱,md5很弱,但盐类很好,所以如果我使用了很多盐类,并将它们混合在一起,结果一定很好!”不是!这不是加密密码的好方法吗?有没有我可以使用的
    crypt
    的代码示例?它是已知的(只需搜索SE即可),所以很容易损坏。千万不要把安全问题留给非专家的人。如果你自己不是专家,就用专家的作品——例如,(
    crypt
    crypt_-BLOWFISH
    )。那不是加密,那是散列。这也散发着货物崇拜加密术的味道。”sha很弱,md5很弱,但是盐是好的,所以如果我用很多的盐,把它们混合起来,结果一定很好!"不是!那么这不是加密密码的好方法吗?有没有我可以使用的
    crypt
    的代码示例?非常感谢。这对web开发人员来说不是很明显,我相信他们中的大多数人仍然在他们的项目中使用
    MD5
    。谢谢你也清理了我对“胡椒”的使用。@Titanium-你是的是的,尽管经常有关于密码数据库被盗的头条新闻,MD5仍然是一次又一次被推荐的。也许你会有兴趣阅读我关于安全密码哈希的文章。非常感谢。这对web开发人员来说不是很明显,我相信他们中的大多数人仍然在他们的项目中使用
    MD5
    。谢谢r还清除了我对“胡椒”的使用。@tianium-你是对的,尽管经常有关于密码数据库被盗的头条新闻,MD5仍然是一次又一次被推荐的。也许你会有兴趣阅读我关于安全密码哈希的文章。