一 加密算法
- 应用于数据传输
- 通过算法,可以得到加密前的数据
二 消息摘要算法
- 应用于数据校验,比如文件完整性验证,存储密码
- 根据算法获得的结果长度是固定的,不同的算法有不同的数据长度
- 有不同消息获得同样运算结果,但概率极低
- 相同的数据通过同一个算法获得的结果一定相同
所以我们在说数据库存储用户密码时,要使用消息摘要算法而不是加密算法, 因为加密算法是可逆的,而消息摘要算法是不可逆的。这样,即使在数据库泄漏时,也不会暴露密码。
我们存储用户通过算法后得到的数据,当用户登录时,通过此算法对用户输入的密码进行运算,如果密码正确,则运算的结果也一定是与数据库中存储的数据符合的。
三 在java中使用消息摘要算法
方法一:spring自带的摘要算法工具DigestUtils
String password = "heyuhong"; //消息摘要算法 String md5Message = DigestUtils.md5DigestAsHex(password.getBytes());
方法二:依赖包:Commons-codec
此工具附带了多种加密算法和消息摘要算法,对比上面的spring自带的算法来说,会比较好用。
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency>
使用:
String passowrd = "xxx"; String md5Password=DigestUtils.md5Hex(password);//md5消息摘要算法
原文地址:https://www.cnblogs.com/Scorpicat/p/12537481.html
时间: 2024-10-10 12:36:06