视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL密码验证实现原理_MySQL
2020-11-09 18:17:11 责编:小采
文档

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

下载本文
显示全文
专题