Java中實(shí)現(xiàn) SHA-256加密的兩種方式
今天對(duì)接第三方突然用到這個(gè)加密方式了,找了一些資料都沒(méi)有特別好的,所以研究了一下找了到了兩種加密,分享一下。
1、利用Apache的工具類實(shí)現(xiàn)加密
maven:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${common-codec.version}</version>
</dependency>/***
* 利用Apache的工具類實(shí)現(xiàn)SHA-256加密
* @param str 加密后的報(bào)文
* @return
*/
public static String getSHA256Str(String str){
MessageDigest messageDigest;
String encdeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));
encdeStr = Hex.encodeHexString(hash);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encdeStr;
}2.利用Java自帶的實(shí)現(xiàn)加密
/**
* 利用java原生的摘要實(shí)現(xiàn)SHA256加密
* @param str 加密后的報(bào)文
* @return
*/
public static String getSHA256StrJava(String str){
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes("UTF-8"));
encodeStr = byte2Hex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encodeStr;
}
/**
* 將byte轉(zhuǎn)為16進(jìn)制
* @param bytes
* @return
*/
private static String byte2Hex(byte[] bytes){
StringBuffer stringBuffer = new StringBuffer();
String temp = null;
for (int i=0;i<bytes.length;i++){
temp = Integer.toHexString(bytes[i] & 0xFF);
if (temp.length()==1){
//1得到一位的進(jìn)行補(bǔ)0操作
stringBuffer.append("0");
}
stringBuffer.append(temp);
}
return stringBuffer.toString();
}到此這篇關(guān)于Java中實(shí)現(xiàn) SHA-256加密的文章就介紹到這了,更多相關(guān)Java SHA-256加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于多網(wǎng)卡環(huán)境下Eureka服務(wù)注冊(cè)IP的選擇問(wèn)題
這篇文章主要介紹了基于多網(wǎng)卡環(huán)境下Eureka服務(wù)注冊(cè)IP的選擇問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java并發(fā)volatile可見(jiàn)性的驗(yàn)證實(shí)現(xiàn)
這篇文章主要介紹了Java并發(fā)volatile可見(jiàn)性的驗(yàn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀
這篇文章主要介紹了Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理詳解,CountDownLatch中調(diào)用await方法線程需要等待所有調(diào)用countDown方法的線程執(zhí)行,這就很適合一個(gè)業(yè)務(wù)需要一些準(zhǔn)備條件,等準(zhǔn)備條件準(zhǔn)備好之后再繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12
SpringBoot結(jié)合Vue實(shí)現(xiàn)投票系統(tǒng)過(guò)程詳解
這篇文章主要介紹了SpringBoot+Vue框架實(shí)現(xiàn)投票功能的項(xiàng)目系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
SpringBoot敏感數(shù)據(jù)脫敏的處理方式
在Spring Boot中處理敏感數(shù)據(jù)脫敏,可以通過(guò)以下幾種方式實(shí)現(xiàn),確保敏感信息在接口返回、日志輸出、數(shù)據(jù)庫(kù)存儲(chǔ)等環(huán)節(jié)得到保護(hù),文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2025-03-03
基于@Value注解和@ConfigurationProperities注解的區(qū)別及說(shuō)明
本文主要介紹了Spring?Boot中三種配置屬性的注入方式:@Value、Environment對(duì)象和@ConfigurationProperties,通過(guò)這些方式,可以方便地將配置文件中的屬性值綁定到Spring管理的Bean對(duì)象的屬性上,從而實(shí)現(xiàn)配置信息的動(dòng)態(tài)加載2026-03-03
基于spring mvc請(qǐng)求controller訪問(wèn)方式
這篇文章主要介紹了spring mvc請(qǐng)求controller訪問(wèn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
利用java反射機(jī)制實(shí)現(xiàn)自動(dòng)調(diào)用類的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇利用java反射機(jī)制實(shí)現(xiàn)自動(dòng)調(diào)用類的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08

