使用Md5进行字符串加密
在业务中,直接将密码存储在数据库中是不安全的,所以需要将密码加密后再存入数据库当中。
MD5算法的算法特点如下: 压缩性:针对不同长度待加密的数据、字符串等等,其都可以返回一个固定长度的MD5加密字符串。(通常32位的16进制字符串); 加密不可逆:其加密过程几乎不可逆,除非维护一个庞大的Key-Value数据库来进行碰撞破解,否则几乎无法解开。 容易计算:从原数据计算出MD5值很容易。 抗修改:对于一个固定的字符串。数字等等,MD5加密后的字符串是固定的,也就是说不管MD5加密多少次,都是同样的结果。而如果修改其中一个字节,得到的MD5值都很有很大变化。 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.Base64; public class Main { /** * 对字符串进行加密 */ public static String encode(String str) { try { //生成一个MD5加密计算摘要 MessageDigest md = MessageDigest.getInstance("MD5"); return Base64.getEncoder().encodeToString(md.digest(str.getBytes(StandardCharsets.UTF_8))); } catch (Exception e) { e.printStackTrace(); return null; } } public static void main(String[] args) { System.out.println(encode("demo")); } }
输出结果:
上一篇:
IDEA上Java项目控制台中文乱码