首页 > 其他分享 >Groovy 基于Groovy实现MD5加密

Groovy 基于Groovy实现MD5加密

时间:2023-05-29 23:33:06浏览次数:48  
标签:Groovy MessageDigest 加密 String md5Str MD5 digest md5

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

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

标签:Groovy,MessageDigest,加密,String,md5Str,MD5,digest,md5
From: https://www.cnblogs.com/shouke/p/17437886.html

相关文章

  • 最常见JS加密保护代码的方法
    当谈到JavaScript(简称JS)代码的保护时,加密是一种常见的策略。加密可以帮助保护你的JS代码,防止未经授权的访问、修改和复制。在本文中,我将向你介绍一些常用的js加密保护方法,并提供一些通俗易懂的示例代码,帮助你入门。压缩和混淆:压缩和混淆是最简单的JS代码保护方法之一。压缩可以减......
  • 加密数字
    packagecom.Demo;//加密数字publicclassTest4{publicstaticvoidmain(String[]args){System.out.println(encry(1983));}//2.加密数字publicstaticStringencry(intnmber){int[]number=split(nmber);for(inti=......
  • SpringBoot+vue使用bcrypt对注册密码加密及登录校验
    一、注册1.后端在pom.xml文件中加入<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId></dependency>lombok依赖<dependency><groupId>org.projectlombok......
  • Terra-Luna归零一年后:信任重建、加密未来路在何方?
       本月既是Terra-Luna归零的一周年,也是FTX崩溃的第六个月,而这两个事件分别代表着2022年加密市场连环爆的开始与高潮,引发了加密行业15年历史上最可怕的生存危机。   尽管今年市场行情有所回暖,比特币开年至今涨幅70%,以太坊完成Shapella升级以及香港宣布放开虚拟资产交易,但那些......
  • Jmeter函数助手30-groovy
    groovy函数用于脚本执行。表达式评估:填入ApacheGroovy脚本(不是文件名)。本身包含逗号的参数值应根据需要进行转义'\,'存储结果的变量名(可选) 1、引用变量进行截取字符处理${__groovy(vars.get("table").substring(2\,4),)},区间为[2,4)即获取第2+1到第4位字符2、将指定......
  • python md5源码
    importbinasciiimportsysimportos.pathSV=[0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,0xa679438e,0x49b40......
  • 央视报道香港加密新政!CZ发文“牛市来袭”,可出圈的竟是它?
       随着加密货币技术的不断进步和创新,政府和金融机构不得不适应不断变化的环境,制定规则和指南以确保市场更加安全和合规。作为领先的加密货币,比特币既是全球监管框架的催化剂,也是试金石。回顾中国监管比特币之路   回顾加密货币发展史,中国曾多次明令禁止比特币交易、挖矿活动......
  • JS逆向 -- 分析被加密的响应数据
    一、当抓到一个数据包的时候,发现响应数据被加密了,这时没有关键字供我们搜索。二、这时就要从url入手,一般js里面会对对响应的加密数据进行解密,我们搜索url中的路径“/dataservice/query/comp/list”三、只搜到一个js文件,进去下断,并查看参数,发现正好是这个数据包提交的参数四、因为要......
  • C#与Node JS互相实现DES加密解密
    具体的加密算法可以可自行查询其区别,这里只是抛砖引玉,大部分加密方法基本都能通过改变传入参数来实现。C#相关类文档: System.Security.Cryptography命名空间|MicrosoftLearnNodeJS相关文档:Crypto|Node.jsv16.20.0Documentation(nodejs.org) C#加密函数:1using......
  • 海内外直播源码加密技术保障您的隐私安全
     在网络生活中,我们常常会面临一些隐私安全问题,很多坏人会利用自己的技术手段,来对别人的网络隐私进行侵犯,例如:入侵我们的摄像头,入侵我们的网站进行篡改或是窃取信息等。当然直播隐私安全也是如此,有一些不法分子会通过网络抓取,或是将流dump到本地进行播放来侵犯我们的隐私合法权......