数据库中用户密码的存储方式-加盐

(Salt),在密码学中,是指在散列之前将散列内容(例如:密码)的任意固定位置插入特定的字符串。这个在散列中加入字符串的方式称为“加盐”。其作用是让加盐后的散列结果和没有加盐的结果不相同,在不同的应用情景中,这个处理可以增加额外的安全性。
在大部分情况,盐是不需要保密的。盐可以是随机产生的字符串,其插入的位置可以也是随意而定。如果这个散列结果在将来需要进行验证(例如:验证用户输入的密码),则需要将已使用的盐记录下来。
--摘自维基百科

//这是一个简单的、在输入内容之後加入“WIKIPEDIA“并进行散列的PHP代码。
<?php
function hash($a) {
    $salt="WIKIPEDIA"; //定义一个加盐字段(WIKIPEDIA),一旦设定并使用,将不可更动。
    $b=$a.$salt; //把密码和加盐字段连接。
    $b=sha($b); //执行MD5散列。
    return $b; //返回散列。
}
?>

数据库表设计

mysql> desc User;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| user_name | varchar(50) | NO   |     |         |       |
| slat     | char(50)     | NO   |     |         |       |
| password  | varchar(256)| NO   |     |         |       |
+----------+-------------+------+-----+---------+-------+

在用户注册或修改密码的过程中在随机生成固定长度的字符串salt,然后以自定义的方式拼接字符串,然都执行MD5或SHA散列加密方式,将salt和加密后的密码存入数据库即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一种:明文 有一些APP的登录注册就直接明文,其实这是十分危险的,危险因素多的数不胜数。譬如 后台被黑客攻破,用...
    SunshineBrother阅读 3,611评论 0 28
  • 现在比较流行的密码存储是对密码明文做 HASH运算,把得到HASH值存储到数据库中。验证过程就是再次对用户发过来的...
    JSON_NULL阅读 3,551评论 4 7
  • 前言 此文章仅适用于兴趣研究,不可作为损坏他人或其他机构等利益之用,本文只是提出一个设想,并不保证具有普适性 开题...
    机智的Harbor阅读 8,265评论 1 9
  • 对于我来说,一家老店存在的意义,不是店里的东西究竟有多吸引我,而是店里的味道能牵起我对那些曾经的惦念,我总...
    四月絮阅读 300评论 0 4
  • 刚知悉一位清华总裁班的同学肝癌晚期,今年42岁,老家江西人,几年奋斗后,在泉州台商投资区办了展架公司,业务还好。三...
    郭福顺阅读 465评论 0 0