欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Java語言MD5加密Base64轉(zhuǎn)換方法

 更新時間:2017年09月12日 11:40:26   作者:隨風(fēng)奔跑的狼  
這篇文章主要為大家詳細介紹了基于Java語言的MD5加密Base64轉(zhuǎn)換方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文提供了基于MD5加密16位和32位的方法,具體內(nèi)容如下

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>標(biāo)題:編碼工具類</p>
 * <p>功能:對數(shù)據(jù)進行編碼轉(zhuǎn)換</p>
 * 作者:趙力
 */
public class EncodeUtil
{
  public static void main(String[] args) throws Exception
  {
    System.out.println(md5Encrypt16("需要進行MD5加密的字符串"));
  }

  /**
   * MD5加密16位
   * @param encryptStr 要加密數(shù)據(jù)
   * @return 返回16位加密結(jié)果
   * ZhaoLi
   */
  public static String md5Encrypt16(String encryptStr)
  {
    return md5Encrypt32(encryptStr).substring(8, 24);
  }

  /**
   * MD5加密32位
   * @param encryptStr 要加密數(shù)據(jù)
   * @return 32位加密結(jié)果
   * 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);
    }
  }

  /** 
   * 結(jié)合base64實現(xiàn)md5加密 
   * @param msg 待加密字符串 
   * @return 獲取md5后轉(zhuǎn)為base64 
   * @throws Exception 
   */
  public static String md5EncryptBase64(String msg) throws Exception
  {
    return msg == null ? null : base64Encode(md5(msg));
  }

  /** 
   * 將byte[]轉(zhuǎn)為各種進制的字符串 
   * @param bytes byte[] 
   * @param radix 可以轉(zhuǎn)換進制的范圍,從Character.MIN_RADIX到Character.MAX_RADIX,超出范圍后變?yōu)?0進制 
   * @return 轉(zhuǎn)換后的字符串 
   */
  public static String binary(byte[] bytes, int radix)
  {
    return new BigInteger(1, bytes).toString(radix);// 這里的1代表正數(shù) 
  }

  /** 
   * 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("報錯內(nèi)容", 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("報錯內(nèi)容", 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());
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot整合微信登錄功能的實現(xiàn)方案

    SpringBoot整合微信登錄功能的實現(xiàn)方案

    今天通過本文給大家分享微信登錄與SpringBoot整合過程,微信掃描登錄實現(xiàn)代碼知道掃描后點擊登錄的全部過程,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • SpringBoot項目實現(xiàn)短信發(fā)送接口開發(fā)的實踐

    SpringBoot項目實現(xiàn)短信發(fā)送接口開發(fā)的實踐

    本文主要介紹了SpringBoot項目實現(xiàn)短信發(fā)送接口開發(fā)的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解SpringBoot構(gòu)建的Web項目如何在服務(wù)端校驗表單輸入

    詳解SpringBoot構(gòu)建的Web項目如何在服務(wù)端校驗表單輸入

    這篇文章主要介紹了詳解SpringBoot構(gòu)建的Web項目如何在服務(wù)端校驗表單輸入,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 帶你詳細了解Spring Security的注解方式開發(fā)

    帶你詳細了解Spring Security的注解方式開發(fā)

    這篇文章主要介紹了詳解spring security四種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • java獲取中文拼音首字母工具類定義與用法實例

    java獲取中文拼音首字母工具類定義與用法實例

    這篇文章主要介紹了java獲取中文拼音首字母工具類定義與用法,結(jié)合實例形式分析了java獲取中文拼音首字母工具類的具體定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • 為什么Java中都不用a.equals(b)判斷對象相等

    為什么Java中都不用a.equals(b)判斷對象相等

    在面試中經(jīng)常會被問,a.equals(b)和“==”的區(qū)別,那么a.equals(b)能不能判斷對象相等,本文就來詳細的介紹一下
    2021-06-06
  • SpringBoot整合Activiti工作流框架的使用

    SpringBoot整合Activiti工作流框架的使用

    本文主要介紹了SpringBoot整合Activiti工作流框架的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringBoot返回前端Long類型字段丟失精度問題及解決方案

    SpringBoot返回前端Long類型字段丟失精度問題及解決方案

    Java服務(wù)端返回Long整型數(shù)據(jù)給前端,JS會自動轉(zhuǎn)換為Number類型,本文主要介紹了SpringBoot返回前端Long類型字段丟失精度問題及解決方案,感興趣的可以了解一下
    2024-03-03
  • SpringBoot超詳細講解事務(wù)管理

    SpringBoot超詳細講解事務(wù)管理

    事務(wù)的作用就是為了保證用戶的每一個操作都是可靠的,事務(wù)中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就 回退到事務(wù)開始未進行操作的狀態(tài)。事務(wù)管理是Spring框架中最為常用的功能之一,我們在使用Spring Boot開發(fā)應(yīng)用時,大部分情況下也都需要使用事務(wù)
    2022-08-08
  • 詳解解密Java中的類型轉(zhuǎn)換問題

    詳解解密Java中的類型轉(zhuǎn)換問題

    這篇文章主要介紹了Java中的類型轉(zhuǎn)換問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論