基于Java语言MD5加密Base64转换方法

 更新时间:2017年09月12日 11:40:26   作者:随风奔跑的狼  
这篇文章主要为大家详细介绍了基于Java语言的MD5加密Base64转换方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文提供了基于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());
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java实现动态上传多个文件并解决文件重名问题

    java实现动态上传多个文件并解决文件重名问题

    这篇文章主要为大家详细介绍了java实现动态上传多个文件,并解决文件重名问题的方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Java实现二叉堆、大顶堆和小顶堆

    Java实现二叉堆、大顶堆和小顶堆

    二叉堆就是完全二叉树,或者是靠近完全二叉树结构的二叉树。大顶堆要求对于一个节点来说,它的左右节点都比它小;小顶堆要求对于一个节点来说,它的左右节点都比它大。本文将用Java分别实现二叉堆、大顶堆和小顶堆。需要的可以参考一下
    2022-01-01
  • 在SpringBoot中通过jasypt进行加密解密的方法

    在SpringBoot中通过jasypt进行加密解密的方法

    今天小编就为大家分享一篇关于在SpringBoot中通过jasypt进行加密解密的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 零基础写Java知乎爬虫之将抓取的内容存储到本地

    零基础写Java知乎爬虫之将抓取的内容存储到本地

    上一回我们说到了如何把知乎的某些内容爬取出来,那么这一回我们就说说怎么把这些内容存储到本地吧。
    2014-11-11
  • RestTemplate上传、下载文件实例代码

    RestTemplate上传、下载文件实例代码

    介绍了文件上传和下载的基本方法,包括处理本地文件和文件流,上传时区分了文件是否在本地,下载时强调返回值为byte[],并提供了工具类进行进一步处理
    2025-02-02
  • Spring Boot中的@EnableAutoConfiguration注解详解

    Spring Boot中的@EnableAutoConfiguration注解详解

    这篇文章主要介绍了Spring Boot中的@EnableAutoConfiguration注解详解,Spring Boot是一个非常流行的Java框架,它可以快速创建基于Spring的应用程序。Spring Boot提供了许多自动配置功能,使得开发者可以非常容易地创建一个可运行的应用程序,需要的朋友可以参考下
    2023-08-08
  • 一文带你轻松掌握EasyExcel的使用技巧

    一文带你轻松掌握EasyExcel的使用技巧

    EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具,这篇文章就来带大家深入了解EasyExcel的使用技巧,需要的可以参考一下
    2023-06-06
  • mybatis根据表逆向自动化生成代码的实现

    mybatis根据表逆向自动化生成代码的实现

    若采用mybatis框架,数据库新建表,手动编写的话,需要编写大量的实体类、mapper文件、mapper.xml文件,都是一些重复且有规律的工作。我们可以引用插件,然后做配置,自动生成这些文件,本文就来详细的介绍一下
    2021-08-08
  • 如何发布jar包到maven中央仓库

    如何发布jar包到maven中央仓库

    这篇文章主要介绍了发布jar包到maven中央仓库的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • SpringBoot整合Tomcat连接池的使用

    SpringBoot整合Tomcat连接池的使用

    这篇文章主要介绍了SpringBoot整合Tomcat连接池的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论