Groovy 基于Groovy实现MD5加密

打印 上一主题 下一主题

主题 892|帖子 892|积分 2676

groovy 3.0.7
代码实现

实现方式1
  1. import java.security.MessageDigest;
  2. public class MD5Utils {
  3.         public final static String MD5(String s) {
  4.                 char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 十六进制的字符
  5.                 try {
  6.                         byte[] byteData = s.getBytes("utf-8"); // 获取待加密字符的字节表示
  7.                         MessageDigest md5 = MessageDigest.getInstance("MD5"); //指定加密方式,获取加密对象
  8.                         byte[] digest = md5.digest(byteData); // 加密
  9.                         StringBuffer sb = new StringBuffer();
  10.                         // 处理成十六进制的字符串(通常)                       
  11.                         for (byte b : digest) {
  12.                 sb.append(hexChars[(b >> 4) & 15]);
  13.                 sb.append(hexChars[b & 15]);
  14.             }            
  15.                          
  16.                         return new String(sb);
  17.                 } catch (Exception e) {
  18.                         e.printStackTrace();
  19.                         return null;
  20.                 }
  21.         }
  22. }
  23. String md5Str = MD5Utils.MD5("2023, hello, mr授客"); // 获取32位小写md5值
  24. println(md5Str); // 52d4eb68f09f4a8eae0b0b02adc748f3
  25. md5Str = md5Str.substring(8, 24); // 获取16位小写md5值
  26. println(md5Str); // f09f4a8eae0b0b02
复制代码
说明:如果在JAVA中运行,则需要修改
  1. char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 十六进制的字符
复制代码
  1. char[] hexChars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; // 十六进制的字符
复制代码
实现方式2
  1. import java.security.MessageDigest;
  2. public class MD5Utils {
  3.         public final static String MD5(String s) {
  4.                 char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];  
  5.                 try {
  6.                         byte[] byteData = s.getBytes("utf-8");
  7.                         MessageDigest md5 = MessageDigest.getInstance("MD5");
  8.                         byte[] digest = md5.digest(byteData);
  9.                         return new BigInteger(1, digest).toString(16);
  10.                 } catch (Exception e) {
  11.                         e.printStackTrace();
  12.                         return null;
  13.                 }
  14.         }
  15. }
  16. String md5Str = MD5Utils.MD5("2023, hello, mr授客"); // 获取32位小写md5值
  17. println(md5Str); // 52d4eb68f09f4a8eae0b0b02adc748f3
  18. md5Str = md5Str.substring(8, 24); // 获取16位小写md5值
  19. println(md5Str); // f09f4a8eae0b0b02
复制代码
实现方式3
  1. import java.security.MessageDigest;
  2. public class MD5Utils {
  3.         public final static String MD5(String s) {
  4.                 char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 十六进制的字符
  5.                 try {
  6.                         byte[] byteData = s.getBytes("utf-8");
  7.                         MessageDigest md5 = MessageDigest.getInstance("MD5");
  8.                         byte[] digest = md5.digest(byteData);
  9.                         return new BigInteger(1, digest).toString(16);
  10.                 } catch (Exception e) {
  11.                         e.printStackTrace();
  12.                         return null;
  13.                 }
  14.         }
  15. }
  16. String md5Str = MD5Utils.MD5("2023, hello, mr授客"); // 获取32位小写md5值
  17. println(md5Str); // 52d4eb68f09f4a8eae0b0b02adc748f3
  18. md5Str = md5Str.substring(8, 24); // 获取16位小写md5值
  19. println(md5Str); // f09f4a8eae0b0b02
复制代码
===提示文字过少,占位行
===提示文字过少,占位行

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表