基于Java語(yǔ)言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>功能:對(duì)數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換</p>
* 作者:趙力
*/
public class EncodeUtil
{
public static void main(String[] args) throws Exception
{
System.out.println(md5Encrypt16("需要進(jìn)行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實(shí)現(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)為各種進(jìn)制的字符串
* @param bytes byte[]
* @param radix 可以轉(zhuǎn)換進(jìn)制的范圍,從Character.MIN_RADIX到Character.MAX_RADIX,超出范圍后變?yōu)?0進(jìn)制
* @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("報(bào)錯(cuò)內(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("報(bào)錯(cuò)內(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());
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java常用工具類之DES和Base64加密解密類
- Java實(shí)現(xiàn)圖片與Base64編碼互轉(zhuǎn)
- Java實(shí)現(xiàn)BASE64編碼和解碼的方法
- 基于Java實(shí)現(xiàn)的Base64加密、解密原理代碼
- JS實(shí)現(xiàn)對(duì)中文字符串進(jìn)行utf-8的Base64編碼的方法(使其與Java編碼相同)
- java BASE64Encoder詳細(xì)介紹及簡(jiǎn)單實(shí)例
- java實(shí)現(xiàn)Base64加密解密算法
- Java 8實(shí)現(xiàn)圖片BASE64編解碼
- java 后臺(tái)將base64字符串保存為圖片的方法
- java自定義實(shí)現(xiàn)base64編碼轉(zhuǎn)換
- Java RSA加密解密實(shí)現(xiàn)方法分析【附BASE64 jar包下載】
- Java實(shí)現(xiàn)的Base64加密算法示例
相關(guān)文章
SpringBoot整合微信登錄功能的實(shí)現(xiàn)方案
今天通過(guò)本文給大家分享微信登錄與SpringBoot整合過(guò)程,微信掃描登錄實(shí)現(xiàn)代碼知道掃描后點(diǎn)擊登錄的全部過(guò)程,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10
SpringBoot項(xiàng)目實(shí)現(xiàn)短信發(fā)送接口開(kāi)發(fā)的實(shí)踐
本文主要介紹了SpringBoot項(xiàng)目實(shí)現(xiàn)短信發(fā)送接口開(kāi)發(fā)的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
詳解SpringBoot構(gòu)建的Web項(xiàng)目如何在服務(wù)端校驗(yàn)表單輸入
這篇文章主要介紹了詳解SpringBoot構(gòu)建的Web項(xiàng)目如何在服務(wù)端校驗(yàn)表單輸入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
帶你詳細(xì)了解Spring Security的注解方式開(kāi)發(fā)
這篇文章主要介紹了詳解spring security四種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
為什么Java中都不用a.equals(b)判斷對(duì)象相等
在面試中經(jīng)常會(huì)被問(wèn),a.equals(b)和“==”的區(qū)別,那么a.equals(b)能不能判斷對(duì)象相等,本文就來(lái)詳細(xì)的介紹一下2021-06-06
SpringBoot返回前端Long類型字段丟失精度問(wèn)題及解決方案
Java服務(wù)端返回Long整型數(shù)據(jù)給前端,JS會(huì)自動(dòng)轉(zhuǎn)換為Number類型,本文主要介紹了SpringBoot返回前端Long類型字段丟失精度問(wèn)題及解決方案,感興趣的可以了解一下2024-03-03

