Groovy 基于Groovy实现MD5加密
  FGTdbwjSrhj4 2023年11月02日 78 0

groovy 3.0.7

代码实现

实现方式1

import java.security.MessageDigest;

public class MD5Utils {
	public final static String MD5(String s) {
		char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 十六进制的字符
		try {
			byte[] byteData = s.getBytes("utf-8"); // 获取待加密字符的字节表示
			MessageDigest md5 = MessageDigest.getInstance("MD5"); //指定加密方式,获取加密对象
			byte[] digest = md5.digest(byteData); // 加密
			StringBuffer sb = new StringBuffer();
			// 处理成十六进制的字符串(通常)			
			for (byte b : digest) {
                sb.append(hexChars[(b >> 4) & 15]);
                sb.append(hexChars[b & 15]);
            }            
			 
			return new String(sb);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}


String md5Str = MD5Utils.MD5("2023, hello, mr授客"); // 获取32位小写md5值
println(md5Str); // 52d4eb68f09f4a8eae0b0b02adc748f3

md5Str = md5Str.substring(8, 24); // 获取16位小写md5值
println(md5Str); // f09f4a8eae0b0b02

说明:如果在JAVA中运行,则需要修改

char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 十六进制的字符

char[] hexChars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; // 十六进制的字符

实现方式2

import java.security.MessageDigest;

public class MD5Utils {
	public final static String MD5(String s) {
		char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];  
		try {
			byte[] byteData = s.getBytes("utf-8"); 
			MessageDigest md5 = MessageDigest.getInstance("MD5"); 
			byte[] digest = md5.digest(byteData); 
			return new BigInteger(1, digest).toString(16);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}

String md5Str = MD5Utils.MD5("2023, hello, mr授客"); // 获取32位小写md5值
println(md5Str); // 52d4eb68f09f4a8eae0b0b02adc748f3

md5Str = md5Str.substring(8, 24); // 获取16位小写md5值
println(md5Str); // f09f4a8eae0b0b02

实现方式3

import java.security.MessageDigest;

public class MD5Utils {
	public final static String MD5(String s) {
		char[] hexChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; // 十六进制的字符
		try {
			byte[] byteData = s.getBytes("utf-8");
			MessageDigest md5 = MessageDigest.getInstance("MD5");
			byte[] digest = md5.digest(byteData);
			return new BigInteger(1, digest).toString(16);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}


String md5Str = MD5Utils.MD5("2023, hello, mr授客"); // 获取32位小写md5值
println(md5Str); // 52d4eb68f09f4a8eae0b0b02adc748f3

md5Str = md5Str.substring(8, 24); // 获取16位小写md5值
println(md5Str); // f09f4a8eae0b0b02

===提示文字过少,占位行
===提示文字过少,占位行

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2xk0JyO908yA   2024年05月17日   60   0   0 其他语言
FGTdbwjSrhj4