密码加密原则

用户在使用软件时所提交的密码,不应该被记录下来,如果将用户的密码记录,这是不安全的做法!

当用户提交注册信息时,密码必须被记录下来,为了保障密码安全,必须对用户提交的原始密码进行加密处理!

用户提交的原始密码通常可以称之为“明文密码”,或“密码的原文”,经过编码处理后,得到的结果通常是不能被直接识别的另一个数据,称之为“密文”。

当尝试对密码进行加密处理时,应该使用成熟的、已有的算法!

需要注意:当需要将密码进行加密并存储下来时(例如存储到数据库中),不可以使用“加密算法”!因为所有的“加密算法”都是可以逆向运算的,即根据密文可以逆向运算得到原文,这种算法通常是用于保障传输过程的安全,并不用于保障存储下来的数据的不可逆向运算!

对于将要存储下来的密码,一般使用“消息摘要算法”进行处理,这类算法是不可以逆向运算的!

消息摘要算法有以下特点:

  • 使用同样的算法,使用同样的消息,运算得到的摘要必然相同
  • 使用同样的算法,无论使用什么消息,运算得到的摘要的长度是相同的
  • 使用同样的算法,使用不同的消息,运算得到的摘要极大概率不会相同

典型的消息摘要算法有:

  • SHA家族(Secure Hash Algorithm)
    • SHA-1(160位算法)
    • SHA-256(256位算法)
    • SHA-384(384位算法)
    • SHA-512(512位算法)
  • MD系列(Message Digest)
    • MD2(128位算法)
    • MD4(128位算法)
    • MD5(128位算法)

在Spring Boot项目中,依赖项中已经包含了DigestUtils工具类,此工具类有便利的、使用MD5算法的API:

@Test
void encode() {
    String rawPassword = "123456";
    String encodedPassword = DigestUtils.md5DigestAsHex(
            rawPassword.getBytes());
    System.out.println("原文:" + rawPassword);
    System.out.println("密文:" + encodedPassword);
}

由于消息摘要算法中“消息”和“摘要”是固定对应的(相同的消息,摘要必然相同),在网络上也有许多平台可以实现消息摘要的“破解”。

这些“破解”平台能够

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值