方式1:存储密码的MD5

String s = DigestUtils.md5DigestAsHex("123456".getBytes());

缺点:同一个密码,算出来的 md5 值是一样的,别人拿到 md5 后,通过比对彩虹表,可能拿到真实的密码。

方式2:存储密码的加盐后的MD5,同时也要存储盐

String s = Md5Crypt.md5Crypt("123456".getBytes(), "$1$aabbcc");

缺点:需要存储密码的md5 和 盐值。数据库需要额外多维护一个盐值字段。
优点:没办法通过在线彩虹表来碰撞出密码。

方式3:使用 Spring 提供的 BCryptPasswordEncoder

BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode1 = bCryptPasswordEncoder.encode("123456");
String encode2 = bCryptPasswordEncoder.encode("123456");System.out.println("encode1:" + encode1);
System.out.println("encode2:" + encode2);boolean matches1 = bCryptPasswordEncoder.matches("123456", encode1);
boolean matches2 = bCryptPasswordEncoder.matches("123456", encode2);System.out.println("matches1: " + matches1);
System.out.println("matches2: " + matches2);

输出结果:

encode1:$2a 10 10 10xI0pEgtycCrIgLBuFLrete1u4iaMWLi0sO.7Pjw/nyv3TDTiEm3FG
encode2:$2a 10 10 10ujmDloNOgXasV.nd4zBzEexyS89/y/ljQdNsn0IhFgAX5wMPCHfti
matches1: true
matches2: true

同一个密码,两次的加密结果是不一样的,但是两个加密的结果,都能跟原密码匹配。这种融合了盐值的加密,但是又不需要额外存储盐,更加安全方便。

用户注册时,密码的加密存储方式相关推荐

  1. 用户密码在后台数据库中加密存储方式

    常见的用户密码在后台数据库中加密存储方式 如何安全的存储用户密码 常见登录密码加密方式 JavaScript逆向实战:admin加密成WaQ7xbhc9TefbwK是什么加密算法?逆向思维考验.详细流 ...

  2. 常见的用户密码在后台数据库中加密存储方式

    转载自:https://blog.csdn.net/ctrip_tech/article/details/80125741 一.用户密码加密 用户密码保存到数据库时,常见的加密方式有哪些,我们该采用什 ...

  3. Kooboo CMS技术文档之三:切换数据存储方式

    切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...

  4. ss修改服务器加密方式,SSM框架新增/修改用户、用户登录时密码加密处理及校验...

    加密技术Md5Crypt需要在pom文件中导入包: commons-codec commons-codec 1.10 一.第一种实现方法 1).新增用户时,对新增后的用户密码进行加密 在userSer ...

  5. python判断网页密码加密方式_python实现网页登录时的rsa加密流程

    对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录, ...

  6. 用户密码加密存储十问十答,一文说透密码安全存储

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 程序员赵鑫 来源 | cnblogs.com/xinzh ...

  7. 如何保证用户登陆时提交密码已经加密

    如何保证用户登陆时提交密码已经加密?密码是否已加密,需要客户端和服务端建立约定,双方按约定办事就行了. 这里提到的另一个问题是,如何保证传输安全? 最理想的方案当然是走 HTTPS 协议. HTTPS ...

  8. android锁屏密码文件夹,深入理解Android M 锁屏密码存储方式

    Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 sqlite 数据库 /data/ ...

  9. java修改手机锁屏密码,深入理解Android M 锁屏密码存储方式

    Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 SQLite 数据库 /data/ ...

最新文章

  1. Swift - 使用addSubview()方法将StoryBoard中的视图加载进来
  2. 【HDOJ】1196 Lowest Bit
  3. Linux探秘之用户态与内核态
  4. 前端学习(1736):前端系列javascript之创建webpack与loader使用
  5. win7更改适配器设置没有本地连接解决方法
  6. Go语言反射之值反射
  7. git 第二次提交_win10 将本地项目上传到github (第一次+再次上传)
  8. Java框架面试题及答案
  9. Python如果or运算的两个参数都等同于False,返回后一个值
  10. [闲聊篇]这个世界所谓的28定律
  11. 王者荣耀英雄战力 最低战区查询
  12. linux系统下使用uTorrent下载ipv6资源
  13. python 操作word 修改页眉与页脚
  14. T100 ERP 开发说明(二)
  15. 实现两个企业微信客户端登录
  16. 迅捷在线压缩有什么办法可以压缩视频
  17. Result统一响应数据
  18. visa基本函数操作
  19. 蚂蚁金服Java岗社招面试5面历程
  20. 嵌入式linux查看usb设备驱动程序,嵌入式Linux下USB驱动程序的设计

热门文章

  1. 内网安全--权限维持
  2. 生化危机8Switch Pro手柄按键提示补丁MOD
  3. 《The One!团队》第八次作业:ALPHA冲刺(二)
  4. 大话西游手游有双系统服务器吗,大话西游手游有几个版本_大话西游手游官服和混服怎么区分_玩游戏网...
  5. 计算机磁盘损坏问题与系统的重置和重装
  6. 计算 ACC(lfw)
  7. 极客大挑战php,2019极客大挑战PHP反序列化
  8. 3dmax和python哪个好学_C4D和3DMAX哪个好?
  9. 【JAVA今法修真】 第八章 仙道万维网 圣地元宇宙
  10. 普林斯顿大学计算机科学研究生条件,普林斯顿大学计算机科学工程理学硕士研究生申请要求及申请材料要求清单...