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

Groovy 基于Groovy实现MD5加密

时间:2023-06-03 11:34:34浏览次数:30  
标签: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://blog.51cto.com/shouke/6407630

相关文章

  • tink google 加密安全实践的框架
    tink是google多年加密实践的框架,提供了安全的加密处理方法,可以简化不少我们的加密处理参考使用publicstaticvoidmain(String[]args)throwsGeneralSecurityException,IOException{AeadConfig.register();//1.Generatethekeymateri......
  • 《加密与解密》- 第一章 - 基础知识 - 笔记
    (纠正了书中一些不正确的地方,如P11中2**64bytes等于16TB已修改为16EB)1.1什么是加密与解密1.1.1软件的加密与解密略1.1.2软件逆向工程内容:去除使用限制或者添加功能获得源代码硬件的复制和模拟要求品质:保持好奇,崇尚自由勤奋+毅力精通至少一门编程语言,尤其是编程思......
  • Jasypt加密SpringBoot配置文件和自动加密数据库敏感信息
    Jasypt是开源的加密和解密的组件。和Spring提供了很好的集成。一、加密SpringBoot配置文件 新建SpringBoot项目,添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>......
  • Springboot实现ENC加密jasypt-spring-boot-starter
    依赖:<!--配置文件加密--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.4</version>&l......
  • 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!
    sslpayload取1024字节,然后使用VAE检测异常的ssl流。代码如下:fromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerimportnumpyasnpimporttensorflowastfimporttflearnfrommatplotlibimportpyplotaspltimport......
  • 超级加解密转换工具——todo,编解码 md5 sha解密可以到https://www.cmd5.com/ 注意有sa
    超级加解密转换工具V2.1绿色免费版       超级加解密转换工具可以说一款万能加密解密转换工具,支持75种方式多种转换,火星最强软件!MD5、16位MD5、MD4、拼音、大小写转换、简繁转换、GBK《-》Big5、GBK简体《-》Big5、GBK《-》SJIS、火星文转换、数字到大写金额、迅雷Thunder......
  • 加密软件下载地址
    1,加密软件下载地址:http://192.168.0.221/externalLinksController/chain/client.rar?ckey=2yPQl48ADCpOiZQCswh357B8EYPunElIRhXp1DzwdkIjXTUrFiKjps2hHtUf7t%2Ba(仅限在公司内网下载地址) 下载后解压,以管理员权限安装此软件......
  • 学习文章:即时通信的安全加密通信模型研究
    学习文章:即时通信的安全加密通信模型研究,具体见原论文摘要重点:即时通信的安全性和易用性。主要工作:分析国内外即时通信的安全通道模型、详细讨论起消息加密和发送流程、给出不同加密模式下的群聊和多设备端的消息转发原理,设计端到端加密的安全通道模型,分析各种安全通信模型的......
  • 区块链的技术——账本是去中心化的分布式存储,加密+校验(哈希二叉树)+多数选举来防止篡改
    ......
  • php页面加密码
    以下是一个简单的示例代码,用于在PHP页面中添加密码:<?php$password="mypassword";//设置密码if($_POST['password']!=$password){//如果表单提交的密码不正确if(isset($_POST['submit'])){//如果表单已经提交过echo"InvalidPassword";//显示错......