2、MD5
说明:严格意义上不属于加密算法 , 属于信息摘要算法 。
例子:
package com.yx.encryption;import java.security.MessageDigest;/** * MD5使用例子 * 生成消息摘要 * * @author yx */public class MD5Demo {private static final char[] HEXES = {'0', '1', '2', '3','4', '5', '6', '7','8', '9', 'a', 'b','c', 'd', 'e', 'f'};/*** byte数组 转换成 16进制小写字符串*/public static String bytes2Hex(byte[] bytes) {if (bytes == null || bytes.length == 0) {return null;}StringBuilder hex = new StringBuilder();for (byte b : bytes) {hex.append(HEXES[(b >> 4) & 0x0F]);hex.append(HEXES[b & 0x0F]);}return hex.toString();}public static void main(String[] args) throws Exception {// 加密字符String src = https://www.isolves.com/it/cxkf/sf/2021-07-30/"EasyJava";// 获取摘要MessageDigest messageDigest = MessageDigest.getInstance("MD5");byte[] md5Result = messageDigest.digest(src.getBytes("utf-8"));System.out.println("摘要信息:" + bytes2Hex(md5Result));}}执行结果:摘要信息:0d50d2ea5aece0b7bc10643a3f72159c
3、SHA
说明:SHA家族的五个算法 , 分别是SHA-1、SHA-224、SHA-256、SHA-384 , 和 SHA-512 , 后四者有时并称为SHA-2 。SHA-1在许多安全协定中广为使用 。MD5与SHA1都是Hash算法 , MD5输出是128位的(转换为16进制则为32个字符) , SHA1输出是160位的(转换为16进制则为40个字符) , MD5比SHA1快 , SHA1比MD5强度高 。
例子:
package com.yx.encryption;import java.security.MessageDigest;/** * SHA使用例子 * 生成消息摘要 * * @author yx */public class SHADemo {private static final char[] HEXES = {'0', '1', '2', '3','4', '5', '6', '7','8', '9', 'a', 'b','c', 'd', 'e', 'f'};/*** byte数组 转换成 16进制小写字符串*/public static String bytes2Hex(byte[] bytes) {if (bytes == null || bytes.length == 0) {return null;}StringBuilder hex = new StringBuilder();for (byte b : bytes) {hex.append(HEXES[(b >> 4) & 0x0F]);hex.append(HEXES[b & 0x0F]);}return hex.toString();}public static void main(String[] args) throws Exception {// 加密字符String src = https://www.isolves.com/it/cxkf/sf/2021-07-30/"EasyJava";// 获取摘要MessageDigest messageDigest = MessageDigest.getInstance("SHA");messageDigest.update(src.getBytes("utf-8"));byte[] md5Result = messageDigest.digest();System.out.println("摘要信息:" + bytes2Hex(md5Result));}}执行结果:摘要信息:a59bcc9c6c15610a8fc0dc75a1551903f5583a90
推荐阅读
- 「Java原理探索」「AQS」教你自定义实现自己的同步器
- Java循环结构——switch语句
- Javascript 中New 操作符 解读
- 不仅限于Java 我们必须要了解的Java位运算
- 关于加密算法你了解多少
- 为什么我们总是推荐Java?Java为什么值得学?
- 学Java还是前端?我是这么看的
- Java开发环境搭建与配置,最全手册看这一篇就够了
- 彻底搞懂Java线程池的工作原理
- Java主要的5个标准注解如何使用?