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

Java中的信息摘要算法MessageDigest類用法詳解

 更新時間:2024年01月16日 09:01:29   作者:jiayoudangdang  
這篇文章主要介紹了Java中的信息摘要算法MessageDigest類用法詳解,java.security.MessageDigest類為應(yīng)用程序提供信息摘要算法的功能,如MD5或SHA-1或SHA-256算法,信息摘要是安全的單向哈希函數(shù),它接收任意大小的數(shù)據(jù),并輸出固定長度的哈希值,需要的朋友可以參考下

MessageDigest 是什么?

java.security.MessageDigest類為應(yīng)用程序提供信息摘要算法的功能,如 MD5 或 SHA-1或SHA-256 算法。

信息摘要是安全的單向哈希函數(shù),它接收任意大小的數(shù)據(jù),并輸出固定長度的哈希值。

MessageDigest 對象調(diào)用getInstance初始化,使用 update 方法處理數(shù)據(jù)。任何時候都可以調(diào)用 reset 方法重置摘要。一旦所有需要更新的數(shù)據(jù)都已經(jīng)被更新了,應(yīng)該調(diào)用 digest 方法之一完成哈希計算。

對于給定數(shù)量的更新數(shù)據(jù),digest 方法只能被調(diào)用一次。在調(diào)用 digest 之后,MessageDigest 對象被重新設(shè)置成其初始狀態(tài)。

常用的方法

兩種getInstance

  • public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
  • 返回實現(xiàn)指定摘要算法的 MessageDigest 對象。
  • algorithm - 所請求算法的名稱
  • public static MessageDigest getInstance(String algorithm,  String provider) throws NoSuchAlgorithmException, NoSuchProviderException
  • 返回實現(xiàn)指定摘要算法的 MessageDigest 對象。
  • algorithm - 所請求算法的名稱
  • provider - 提供者的名稱。

update

  • public void update(byte[] input)
  • 使用指定的 byte 數(shù)組更新摘要。

digest

  • public byte[] digest()
  • 通過執(zhí)行諸如填充之類的最終操作完成哈希計算。在調(diào)用此方法之后,摘要被重置。

isEqual

  • public static boolean isEqual(byte[] digesta, byte[] digestb)
  • 比較兩個摘要的相等性。做簡單的字節(jié)比較。 
  • 注意:Provider可以通過 java.security.Security.getProviders()
  • 方法獲取已注冊提供者列表。比較常用的有“SUN”

SUN提供的常用的算法名稱有

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

使用的例子

static byte[] md5(String key) {
	MessageDigest md;
	try {
		// 返回實現(xiàn)指定摘要算法的 MessageDigest 對象
		md = MessageDigest.getInstance("MD5");
		// getBytes(String charsetName): 使用指定的字符集將字符串編碼為 byte 序列,并將結(jié)果存儲到一個新的 byte 數(shù)組中
		byte[] bytes = key.getBytes(StandardCharsets.UTF_8);
		// 使用指定的 byte 數(shù)組更新摘要
		md.update(bytes);
	} catch (NoSuchAlgorithmException e) { //NoSuchAlgorithmException: 當(dāng)請求特定的加密算法但在環(huán)境中不可用時,將拋出此異常
		// 拋出非法狀態(tài)異常
		throw new IllegalStateException(e.getMessage(), e);
	}
	// 通過執(zhí)行諸如填充之類的最終操作完成哈希計算。在調(diào)用此方法之后,摘要被重置
	return md.digest();
}

到此這篇關(guān)于Java中的信息摘要算法MessageDigest類用法詳解的文章就介紹到這了,更多相關(guān)信息摘要算法MessageDigest類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • idea中javaweb的jsp頁面圖片加載不出來問題及解決

    idea中javaweb的jsp頁面圖片加載不出來問題及解決

    這篇文章主要介紹了idea中javaweb的jsp頁面圖片加載不出來問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Spring 數(shù)據(jù)庫連接池(JDBC)詳解

    Spring 數(shù)據(jù)庫連接池(JDBC)詳解

    本篇文章主要介紹了基于Spring的JDBC基本框架搭建;基于Spring的JDBC增刪改查;讀取配置文件中的數(shù)據(jù)等,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05
  • 自己寫的java日志類和方法代碼分享

    自己寫的java日志類和方法代碼分享

    這篇文章主要介紹了一個自己寫的java日志類和方法,下面把代碼分享給大家
    2014-01-01
  • log4j2的異步使用及添加自定義參數(shù)方式

    log4j2的異步使用及添加自定義參數(shù)方式

    這篇文章主要介紹了log4j2的異步使用及添加自定義參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 簡單了解springboot的jar包部署步驟

    簡單了解springboot的jar包部署步驟

    這篇文章主要介紹了springboot的jar包部署步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 論java如何通過反射獲得方法真實參數(shù)名及擴(kuò)展研究

    論java如何通過反射獲得方法真實參數(shù)名及擴(kuò)展研究

    這篇文章主要為大家介紹了java如何通過反射獲得方法的真實參數(shù)名以及擴(kuò)展研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步早日升職加薪
    2022-01-01
  • 詳解如何使用MyBatis簡化JDBC開發(fā)

    詳解如何使用MyBatis簡化JDBC開發(fā)

    JavaEE?企業(yè)級?Java?項目中的經(jīng)典三層架構(gòu)為表現(xiàn)層,業(yè)務(wù)層和持久層.MyBatis?對?JDBC?代碼進(jìn)行了封裝,作為一款優(yōu)秀的持久層框架,專門用于簡化JDBC開發(fā).本文主要介紹一下如何使用MyBatis簡化JDBC開發(fā),需要的可以參考一下
    2023-01-01
  • Java技術(shù)長久占居主要地位的12個原因

    Java技術(shù)長久占居主要地位的12個原因

    這篇文章主要為大家詳細(xì)介紹了12個Java長久占居主要地位的原因,感興趣的小伙伴們可以參考一下
    2016-07-07
  • java中雪花算法時鐘回?fù)軉栴}解決

    java中雪花算法時鐘回?fù)軉栴}解決

    本文介紹了分布式系統(tǒng)中使用雪花算法生成唯一ID時可能遇到的時鐘回?fù)軉栴},以及解決這個問題的幾種方法,包括等待機(jī)制、擴(kuò)展位、預(yù)留時間戳或邏輯時鐘等,感興趣的可以了解一下
    2024-10-10
  • 手寫mybatis完整sql插件問題及實現(xiàn)思路

    手寫mybatis完整sql插件問題及實現(xiàn)思路

    大家在使用mybatis的過程中,mysql日志功能一般不會直接放到數(shù)據(jù)庫中執(zhí)行的,今天小編重點給大家分享手寫mybatis完整sql插件問題及實現(xiàn)思路,對mybatis完整sql插件相關(guān)知識感興趣的朋友一起看看吧
    2021-05-05

最新評論