微信扫一扫 分享朋友圈

已有 121 人浏览分享

开启左侧

关于数据库中存储密码的加密

[复制链接]
121 0
关于密码加密

  基本原则: 存储到数据库中的密码必须加密处理!并且,必须使用不可逆的算法!并且,必须使用不可逆的算法!
  散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
  散列函数,顾名思义,它是一个函数。如果把它定义成 hash(key) ,其中 key 表示元素的键值,则 hash(key) 的值表示经过散列函数计算得到的散列值。
  一个哈希值对应着无数个明文
  所有的哈希算法都是不可逆的,其中,消息摘要算法都属于哈希算法!典型的消息摘要算法包括MD系列的和SHA家族的算法!
  由于消息摘要算法的摘要结果长度是固定的,所以,在用于加密时,如果没有做进一步处理,可能会被穷举的方式破解(破解方列举所有可能的密码与摘要,通过查询的
方式,根据密文找出原文).
  为了保障密码安全,基础的加强操作有:
    1.尽可能的要求用户使用长度更长的密码,并使用安全强度更高(有更多的字符组合)的密码
  上述代码主要测试Digest工具类中的md5DigestAsHex(String 明文)方法,用于给明文利用MD5算法进行加密获取到加密后的密文,存储到数据库中的数据就是此明文加密后的密文.
   2.多重加密

    3.加盐

此代码片段利用了加盐的方法,对密文等级进行提升,且加入的盐值可以是给定的值,也可以是利用UUID.randomUUID()得到的随机值.  UUID 是 通用唯一识别码(Universally Unique Identifier)
当使用了UUID时,盐值将会获得有且仅有一个的单独字段,这样做的情况下,明文将不能通过逆运算获得.
对于盐值的顺序是不固定的,可以md5(String 明文)的参数内加入多个盐值,注意盐值要是字符串的形式.
可以在控制台的输出中看出,实际上存储到数据库中的数据是(盐值+明文)通过DigestUtils工具类中的md5DigestAsHex加密算法加密获得的encodePassword.

    4.使用更加安全的算法(例如从MD5升级为SHA256甚至SHA-512)
  MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致.
SHA256算法使用的哈希值长度是256位。这是一个抽象类。此类的唯一实现是SHA256Managed。

    4.综合以上做法
  甚至,在使用盐时,还可以使用随机的盐值,但是,需要注意,如果使用了随机盐值,则这个随机盐值必须被记录下来(可以作为最终密文的一部分,或者在数据表中使用
单独的字段存储等),否则后续将无法正确的验证密码!

免责声明:
1,海欣资源网所发布的资源由网友上传和分享,不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
2,海欣资源网的资源来源于网友分享,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3,海欣资源网所发布的资源由网友上传和分享,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
4,如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉,联系方式邮箱 haixinst@qq.com
海欣资源-企业信息化分享平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

24

主题
热度排行
回复排行
最新贴子

Archiver|手机版|海欣资源 ( 湘ICP备2021008090号-1 )|网站地图

GMT+8, 2022-11-27 22:22 , Gzip On, Redis On.

免责声明:本站所发布的资源和文章均来自网络,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉。