java加密枝術(shù)深入理解
java.security包中的MessageDigest類(lèi)提供了計(jì)算消息摘要的方法, 首先生成對(duì)象,執(zhí)行其update( )方法可以將原始數(shù)據(jù)傳遞給該對(duì)象,然后執(zhí)行其digest( )方法即可得到消息摘要。具體步驟如下:
(1)生成MessageDigest對(duì)象
MessageDigest m=MessageDigest.getInstance("MD5");
分析:和2.2.1小節(jié)的KeyGenerator類(lèi)一樣。MessageDigest類(lèi)也是一個(gè)工廠類(lèi),其構(gòu)造器是受保護(hù)的,不允許
直接使用new MessageDigist( )來(lái)創(chuàng)建對(duì)象,而必須通過(guò)其靜態(tài)方法getInstance( )生成MessageDigest對(duì)象。
其中傳入的參數(shù)指定計(jì)算消息摘要所使用的算法,常用的有"MD5","SHA"等。若對(duì)MD5算法的細(xì)節(jié)感興趣可參考
http://www.gztarena.com/rfc1321.txt。
(2)傳入需要計(jì)算的字符串
m.update(x.getBytes("UTF8" ));
分析:x為需要計(jì)算的字符串,update傳入的參數(shù)是字節(jié)類(lèi)型或字節(jié)類(lèi)型數(shù)組,對(duì)于字符串,需要先使用
getBytes( )方法生成字符串?dāng)?shù)組。
(3)計(jì)算消息摘要
byte s[ ]=m.digest( );
分析:執(zhí)行MessageDigest對(duì)象的digest( 廣州達(dá)內(nèi)java)方法完成計(jì)算,計(jì)算的結(jié)果通過(guò)字節(jié)類(lèi)型的數(shù)組返回。
(4)處理計(jì)算結(jié)果
必要的話(huà)可以使用如下代碼將計(jì)算結(jié)果s轉(zhuǎn)換為字符串。
String result="";
for (int i=0; i
result+=Integer.toHexString((0x000000ff & s) | 0xffffff00)。substring(6);
}
★代碼與分析:
完整程序如下:
import java.security.*;
public class DigestPass{
public static void main(String args[ ]) throws Exception{
String x=args[0];
MessageDigest m=MessageDigest.getInstance("MD5");
m.update(x.getBytes("UTF8"));
byte s[ ]=m.digest( );
String result="";
for (int i=0; i
result+=Integer.toHexString((0x000000ff & s) | 0xffffff00)。substring(6);
}
System.out.println(result);
}
}
★運(yùn)行程序
輸入java DigestCalc abc來(lái)運(yùn)行程序,其中命令行參數(shù)abc是原始數(shù)據(jù),屏幕輸出計(jì)算后的消息摘要:
900150983cd24fb0d6963f7d28e17f72。
相關(guān)文章
Spring cloud oauth2如何搭建認(rèn)證資源中心
這篇文章主要介紹了Spring cloud oauth2如何搭建認(rèn)證資源中心,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Java項(xiàng)目之java+springboot+ssm實(shí)現(xiàn)理財(cái)管理系統(tǒng)設(shè)計(jì)
這篇文章主要介紹了Java項(xiàng)目java+springboot+ssm實(shí)現(xiàn)理財(cái)管理系統(tǒng)設(shè)計(jì),使用了當(dāng)前較為流行的spring boot,spring,spring mvc,mybatis,shiro框架分頁(yè)處理使用了pagehelper進(jìn)行操作,需要的朋友可以參考一下2022-03-03Java實(shí)現(xiàn)文件變化監(jiān)聽(tīng)代碼實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)文件變化監(jiān)聽(tīng)代碼實(shí)例,通過(guò)定時(shí)任務(wù),輪訓(xùn)查詢(xún)文件的最后修改時(shí)間,與上一次進(jìn)行對(duì)比,如果發(fā)生變化,則說(shuō)明文件已經(jīng)修改,進(jìn)行重新加載或?qū)?yīng)的業(yè)務(wù)邏輯處理,需要的朋友可以參考下2024-01-01Java文件操作工具類(lèi)fileUtil實(shí)例【文件增刪改,復(fù)制等】
這篇文章主要介紹了Java文件操作工具類(lèi)fileUtil,結(jié)合實(shí)例形式分析了java針對(duì)文件進(jìn)行讀取、增加、刪除、修改、復(fù)制等操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10springboot項(xiàng)目中的bootstrap.yml配置不生效的原因及解決(沒(méi)有自動(dòng)提示)
新創(chuàng)建一個(gè) springboot項(xiàng)目,添加了 bootstrap.yml 文件,發(fā)現(xiàn)文件并沒(méi)有如預(yù)期變成綠色葉子,編寫(xiě)的時(shí)候也沒(méi)有自動(dòng)提示,啟動(dòng)的時(shí)候,發(fā)現(xiàn)端口是8080,由此發(fā)現(xiàn)配置并沒(méi)有生效,所以本文給大家講解了springboot項(xiàng)目中的bootstrap.yml配置不生效的原因及解決2024-01-01SpringBoot整合Kafka工具類(lèi)的詳細(xì)代碼
Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù),這篇文章主要介紹了SpringBoot整合Kafka工具類(lèi)的代碼詳解,需要的朋友可以參考下2022-09-09Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入
這篇文章主要介紹了Java 實(shí)現(xiàn)鏈表結(jié)點(diǎn)插入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02