Heim >Datenbank >MySQL-Tutorial >MySQL密码验证实现原理_MySQL

MySQL密码验证实现原理_MySQL

WBOY
WBOYOriginal
2016-06-01 13:41:461036Durchsuche

bitsCN.com MySQL密码验证实现原理 这篇文章可以帮助您深入理解MySQL是如何进行密码验证的。 首先,我们知道,用户密码是保存在mysql.user这个表的password列,并且是以hash值的形式加密保存的。     整个验证过程如下:当客户端请求连接时, 1.服务器端会随机生成一个random string发送给客户端; 2.客户端收到random string后,进行hash加密     第一步,将密码hash,得到hash值hash_stage1;  eg.hash_stage1=sha1("password");      第二步,二次hash,得到hash_stage2;  eg. hash_stage2=sha1(hash_stage1);     第三步,将密码二次hash得到的值与random string进行hash,得到hash_stage3; eg. hash_stage3=sha1("random string",hash_stage2);     第四步,异或处理准备发送给服务器端,得到reply=xor(hash_stage1,hash_stage3);     最后,将reply的值发送给服务器端。     3.服务器端收到reply后同样进行hash运算    第一步,将保存的hash形式的密码hashpassword与random string进行hash,得到server_hash_stage1=sha1("random string","hashpassword");    第二步,将客户端发送的reply与刚才得到的hash值进行异或运算,得到xor_value; eg. xor_value=xor(reply,server_hash_stage1);    第三步,将得到的异或值进行hash,得到server_hash_stage2; eg. server_hash_stage2=sha1(server_hash_stage1);    第四步,验证,将最后得到的hash值server_hash_stage2与保存的密码hashpassword进行比较。eg.   server_hash_stage2==hashpassword,相等则验证通过。  作者 sissiyinxi bitsCN.com

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:MySQL心得5-2--约束_MySQLNächster Artikel:MySQL心得10-1--事务_MySQL