Maison développement back-end tutoriel php 深入密码加salt原理的分析_PHP

深入密码加salt原理的分析_PHP

Jun 01, 2016 pm 12:06 PM
密码

我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。

加Salt可以一定程度上解决这一问题。所谓加Salt方法,就是加点“佐料”。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。

这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使用的一样才行)。

下面以PHP示例,讲解md5($pass.$salt)加密函数。
复制代码 代码如下:
function hash($a) {
    $salt=”Random_KUGBJVY”;  //定义一个salt值,程序员规定下来的随机字符串
    $b=$a.$salt;  //把密码和salt连接
    $b=md5($b);  //执行MD5散列
    return $b;  //返回散列   
}
?>

调用方式:$new_password=hash($_POST[password]);   //这里接受表单提交值,并进行加密
 
下面详细介绍一下加Salt散列的过程。介绍之前先强调一点,前面说过,验证密码时要使用和最初散列密码时使用“相同的”佐料。所以Salt值是要存放在数据库里的。

用户注册时,

用户输入【账号】和【密码】(以及其他用户信息);系统为用户生成【Salt值】;系统将【Salt值】和【用户密码】连接到一起;对连接后的值进行散列,得到【Hash值】;将【Hash值1】和【Salt值】分别放到数据库中。
用户登录时,

用户输入【账号】和【密码】;系统通过用户名找到与之对应的【Hash值】和【Salt值】;系统将【Salt值】和【用户输入的密码】连接到一起;对连接后的值进行散列,得到【Hash值2】(注意是即时运算出来的值);比较【Hash值1】和【Hash值2】是否相等,相等则表示密码正确,否则表示密码错误。
有时候,为了减轻开发压力,程序员会统一使用一个salt值(储存在某个地方),而不是每个用户都生成私有的salt值。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème selon lequel Windows 11 vous demande de saisir le nom d'utilisateur et le mot de passe de l'administrateur pour continuer ? Comment résoudre le problème selon lequel Windows 11 vous demande de saisir le nom d'utilisateur et le mot de passe de l'administrateur pour continuer ? Apr 11, 2024 am 09:10 AM

Comment résoudre le problème selon lequel Windows 11 vous demande de saisir le nom d'utilisateur et le mot de passe de l'administrateur pour continuer ?

Comment définir le mot de passe WiFi du routeur à l'aide d'un téléphone mobile (en utilisant le téléphone mobile comme outil) Comment définir le mot de passe WiFi du routeur à l'aide d'un téléphone mobile (en utilisant le téléphone mobile comme outil) Apr 24, 2024 pm 06:04 PM

Comment définir le mot de passe WiFi du routeur à l'aide d'un téléphone mobile (en utilisant le téléphone mobile comme outil)

Tutoriel pour changer le mot de passe wifi sur téléphone mobile (opération simple) Tutoriel pour changer le mot de passe wifi sur téléphone mobile (opération simple) Apr 26, 2024 pm 06:25 PM

Tutoriel pour changer le mot de passe wifi sur téléphone mobile (opération simple)

Mot de passe incorrect, méfiez-vous de l'avertissement BitLocker Mot de passe incorrect, méfiez-vous de l'avertissement BitLocker Mar 26, 2024 am 09:41 AM

Mot de passe incorrect, méfiez-vous de l'avertissement BitLocker

Comment supprimer le mot de passe de l'écran de verrouillage de Windows 10 maintenant Comment supprimer le mot de passe de l'écran de verrouillage de Windows 10 maintenant Jan 09, 2024 pm 03:33 PM

Comment supprimer le mot de passe de l'écran de verrouillage de Windows 10 maintenant

Comment basculer entre deux systèmes et réinitialiser le mot de passe sur le téléphone mobile Huawei Comment basculer entre deux systèmes et réinitialiser le mot de passe sur le téléphone mobile Huawei Feb 19, 2024 am 09:05 AM

Comment basculer entre deux systèmes et réinitialiser le mot de passe sur le téléphone mobile Huawei

Comment réparer le message « iPhone non disponible » Comment réparer le message « iPhone non disponible » Sep 17, 2023 pm 09:25 PM

Comment réparer le message « iPhone non disponible »

Comment utiliser Passkey pour votre compte Microsoft Comment utiliser Passkey pour votre compte Microsoft Feb 19, 2024 am 11:03 AM

Comment utiliser Passkey pour votre compte Microsoft

See all articles