基于Java语言MD5加密Base64转换方法
作者:随风奔跑的狼 发布时间:2023-11-24 00:22:41
标签:Java,MD5,加密
本文提供了基于MD5加密16位和32位的方法,具体内容如下
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* <p>标题:编码工具类</p>
* <p>功能:对数据进行编码转换</p>
* 作者:赵力
*/
public class EncodeUtil
{
public static void main(String[] args) throws Exception
{
System.out.println(md5Encrypt16("需要进行MD5加密的字符串"));
}
/**
* MD5加密16位
* @param encryptStr 要加密数据
* @return 返回16位加密结果
* ZhaoLi
*/
public static String md5Encrypt16(String encryptStr)
{
return md5Encrypt32(encryptStr).substring(8, 24);
}
/**
* MD5加密32位
* @param encryptStr 要加密数据
* @return 32位加密结果
* ZhaoLi
*/
public static String md5Encrypt32(String encryptStr)
{
MessageDigest md5;
try
{
md5 = MessageDigest.getInstance("MD5");
byte[] md5Bytes = md5.digest(encryptStr.getBytes());
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++)
{
int val = (md5Bytes[i]) & 0xff;
if (val < 16)
{
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString().toLowerCase();
} catch (Exception e)
{
throw new RuntimeException(e);
}
}
/**
* 结合base64实现md5加密
* @param msg 待加密字符串
* @return 获取md5后转为base64
* @throws Exception
*/
public static String md5EncryptBase64(String msg) throws Exception
{
return msg == null ? null : base64Encode(md5(msg));
}
/**
* 将byte[]转为各种进制的字符串
* @param bytes byte[]
* @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制
* @return 转换后的字符串
*/
public static String binary(byte[] bytes, int radix)
{
return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数
}
/**
* base 64 encode
* @param bytes 待编码的byte[]
* @return 编码后的base 64 code
*/
public static String base64Encode(byte[] bytes)
{
return new BASE64Encoder().encode(bytes);
}
/**
* base 64 decode
* @param base64Code 待解码的base 64 code
* @return 解码后的byte[]
* @throws Exception
*/
public static byte[] base64Decode(String base64Code)
{
try
{
return base64Code == null ? null : new BASE64Decoder().decodeBuffer(base64Code);
} catch (IOException e)
{
throw new RuntimeException("报错内容", e);
}
}
/**
* 获取byte[]的md5值
* @param bytes byte[]
* @return md5
* @throws Exception
*/
public static byte[] md5(byte[] bytes)
{
MessageDigest md;
try
{
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e)
{
throw new RuntimeException("报错内容", e);
}
md.update(bytes);
return md.digest();
}
/**
* 获取字符串md5值
* @param msg
* @return md5
* @throws Exception
*/
public static byte[] md5(String msg)
{
return msg == null ? null : md5(msg.getBytes());
}
}
来源:http://www.cnblogs.com/ikcai/p/7509221.html
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- java String的深入理解一、Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和
- 详解android 通过uri获取bitmap图片并压缩很多人在调用图库选择图片时会在onActivityResult中用Media.get
- Toast一般用来显示一行文字,用法比较固定:Toast.makeText(Context context,String message,i
- 消息队列1.消息队列的原理1.1 msgqueue采用链表来实现消息队列, 该链表是由系统内核维护,1.2 系统中可能有很多的msgqueu
- 1.jsch官方API查看地址(附件为需要的jar) http://www.jcraft.com/jsch/2.jsch简介 JSch(Ja
- engine的实现结构elasticsearch对于索引中的数据操作如读写get等接口都封装在engine中,同时engine还封装了索引的
- 1. 参数中直接加入%%param.setUsername("%CD%"); param.set
- 一个线程的生命周期:新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态
- 通过GPS取得的是一个Location类型的经纬度, 可以转换为两个Double 纬度和经度.纬度: 23.223871812820435纬
- 引言在项目中,时间的使用必不可少,而java 8之前的时间api Date和Calander等在使用上存在着很多问题,于是,jdk1.8引进
- 1.spring boot * 默认有:HandlerInterceptorAdapterAbstractHandlerMappingUse
- 1.概述在本教程中,我们将讨论如何使用Spring Security OAuth和Spring Boot实现SSO - 单点登录。我们将使用
- 下面分几部分介绍C#实现自动售货机接口的方法,代码写的非常详细,不懂的地方有注释可以参考下。MachineJP类:第1部分:串口初始化,串口
- Maven多模块编译慢最近在部署项目时发现,Maven编译打包相当耗时,比之前项目用Gradle慢了很多倍,特别是对于WEB工程,打war包
- 一般数据库的编码是utf8,utf8是不支持存储表情符的,当存入的微信昵称带有表情符时就会出现乱码情况,有两种解决方法:1.mysql数据库
- Java 队列实现原理“队列”这个单词是英国人说的“排”。在英国“排队”的意思就是站到一排当中去。计算机科学中,队列是一种数据结构,有点类似
- 一、前言程序界面上的按钮多种多样,常用的就这几种:普通按钮、图标按钮、文字按钮、图片文字混合按钮。本文章记录了不同样式类型的按钮实现方法。下
- 在项目中有事需要对值为NULL的对象中Field不做序列化输入配置方式如下:[配置类型]:源码包中的枚举类:public static en
- 通过ExifInterface可以将拍照时的一些属性信息写入图片文件里,其中包括经纬度信息。本文介绍一种将经纬度坐标写入JPEG图片文件的方
- 上一小节简单分析了directArena内存分配大概流程 ,知道其先命中缓存, 如果命中不到, 则区分配一款连续内存, 这一小节带