• 联系我们
  • 地址:湖北武汉三环科技园
  • 电话:159116031100
  • 传真:027-68834628
  • 邮箱:
  • 当前所在位置:首页 - 潮流服饰
  • 5分钟了解密码的加密加盐处理

  • 1、首先介绍一下惯例的登录认证(非安全性)

    l 数据库表如下所示:

    <form action="index.jsp" method="post">
    账号:<input type="text" name="username",JSON格式化是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率;/><br/>
    密码:<input type="password" name="password"><br/><br/>
    <input type="submit" value="提交"><br/>
    </form>

    l 用户通过表单提交用户名,密码两个字段查问数据库匹配,Base64编码/解码是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范,实现登录认证功效,但存在的安全隐患问题太多:

    (1)数据库密码以明文的情势进行存储。

    (2)数据传输的过程中未对数据进行加密处理。

    2、针对以上两个问题进行剖析和解决

    l 平安加密:首先对数据库表的password字段进行摘要md5处理,sql语句如下:

    l md5加密后的数据

    l 数据库密码加密后,校验的逻辑就产生了些变更,须要对提交的密码进行加密之后再做对照,然而这样子仍是不安全。

    (1)通过以上步骤,咱们只对数据库的password明文字段进行了简略的MD5加密,进入http://www.cmd5.com/ 输入加密后的密文进行解密后能够得到明文密码

    (2)轻易根据密文位数揣测算法,从而应用工具破解。

    (3)实在密码雷同,加密过的密码也相同。

    3、接下来我们介绍一下对其进行加盐处理

    l 在表中增加一列salt字段(盐),内容随便输入23sd2,而后跟本来的明文密码123456联合,再进行md5加密

    阐明:所谓的salt字段就是一个随机的字段,详细随机算法就不探讨了,每当用户注册账户时,后盾就给它随机天生一个不同的字段,然后依据password和salt字段结合进行摘要处置,存在数据库表中的password字段,这样一来,原来明文都是123456生成的密文就不一样了。

    以上的步骤我们只是对数据库进行了加密,为了避免用户输入密码在传输的过程中被抓包工具获取,JavaScript代码格式化是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的,我们还要在密码传输的进程中进行加密,这样可以使得获取到的也是密文。

    4、最后先容下BCrypt加盐加密

    l 经过BCryptPasswordEncoder加密后的内容,不需要专门的salt字段存储盐,而是在密文中。

    l BCrypt密码图解

    l Bcrypt有四个变量:

    saltRounds: 正数,代表hash杂凑次数,数值越高越安全,默认10次。

    myPassword: 明文密码字符串。

    salt: 盐,一个128bits随机字符串,22字符

    myHash: 经由明文密码password和盐salt进行hash

    l 如何校验准确性

    在校验时,从密文中掏出盐salt,salt跟password进行hash,得到的成果跟保留在DB中的hash进行比对。

    总结:

    l 对用户的密码维护,数据库对敏感的字符内容必定要进行加密之后存储。

    l 假如只是单纯的对密码进行加密,密码字符一样会导致加密后的内容也一样,会呈现破解一个就可以破解一片的情形。

    l 通过对密码加盐(混入随机字符拼接在密码明文中)之后加密,可以增添体系庞杂度,得到更强更保险的密文摘要值。

  • 关键词: