java之消息摘要算法,常用的消息摘要算法有哪些

本文目錄一覽:

1.1 信息摘要算法簡介

數據摘要算法(信息摘要)是密碼學算法中非常重要的一個分支,它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,由於算法具有其不可逆性,有時候也會被用做敏感信息加密。

消息摘要算法(雜湊算法,哈希算法)的主要特徵是加密過程不需要密鑰,並且經過加密的數據無法被解密,只有輸入相同的明文數據經過相同的消息摘要算法才能得到相同的密文。

一般地,把對一個信息的摘要稱為該消息的指紋或數字簽名,信息摘要算法的主要用途是 信息完整性校驗 ,就好比我們接到一個快遞,肯定都會先確定快遞包裝是否完整,有沒有被人打開過,裡面的東東有沒有被人動過。

在計算機領域,我們也希望能知道別人傳遞的消息是否完整、是否有被篡改,這裡就用到信息摘要算法。

舉例:我們傳遞 password 時,需要將 password 加 salt 後做信息摘要,接收方核對摘要,相同則接受處理,不相同則認為本次的 password 傳輸過程中被篡改,拒絕本次請求。

信息摘要算法來源於 CRC算法 ,最初 CRC算法 是用來驗證數據完整性的,即我們常見的 奇偶校驗碼 、 循環冗餘校驗 ,在CRC基礎上發展出了MD和SHA兩大算法家族,CRC比這些算法都要早,MD算法比SHA算法早,SHA算法是對MD算法的改進。再後來則發展出了可以帶有密碼的信息摘要算法- MAC算法 。

信息摘要算法包括三大類,MD、SHA和MAC算法,MD的分類是按照版本規定的,SHA一般是按照產生的消息長度分類的,但是SHA系列算法在學術上會按照算法版本區分SHA-0、SHA-1、SHA-2、SHA-3,

MAC算法是Hmac加融合的其他算來命名的。

下表是主要的信息摘要算法的特點比較,關於MD5、SHA1等算法的具體過程,非安全、算法專業人士可不學習,如有需要可以參考下面的維基百科:

美國對於算法出口有着嚴格的限制,Sun公司(現在應該是甲骨文了)限於美國算法出口法律的限制和本身的一些原因,並有提供特別全面的算法支持,不過java的加密模塊被設計為:以SPI方式提供算法具體實現,可以用來透明的接入其他算法供應商,通過SPI機制可以直接使用其他算法供應商的jar包工具。

在Java中主要的算法供應商有三類:Sun本身的算法,包含在JDK中,大部分在JDK 1.6之後,Bouncy Castle和Commons Codec。

用JAVA程序實現消息摘要算法,並生成一個數的消息摘要

import java.security.MessageDigest;

String myinfo=”我的測試信息”;

MessageDigest alg = MessageDigest.getInstance(“MD5”);

alga.update(myinfo.getBytes());

byte[] bytes = alga.digest();

分享Java常用幾種加密算法

簡單的Java加密算法有:

第一種. BASE

Base是網絡上最常見的用於傳輸Bit字節代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規範。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。

第二種. MD

MD即Message-Digest Algorithm (信息-摘要算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD的前身有MD、MD和MD。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD後都能生成唯一的MD值。好比現在的ISO校驗,都是MD校驗。怎麼用?當然是把ISO經過MD後產生MD的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放着MD的串。就是用來驗證文件是否一致的。

MD算法具有以下特點:

壓縮性:任意長度的數據,算出的MD值長度都是固定的。

容易計算:從原數據計算出MD值很容易。

抗修改性:對原數據進行任何改動,哪怕只修改個字節,所得到的MD值都有很大區別。

弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。

強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。

MD的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被”壓縮”成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。

第三種.SHA

安全哈希算法(Secure Hash Algorithm)主要適用於數字簽名標準(Digital Signature Standard DSS)裡面定義的數字簽名算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種“指紋”或是“摘要”所以對散列值的數字簽名就可以視為對此明文的數字簽名。

SHA-與MD的比較

因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:

對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。

對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。

速度:在相同的硬件上,SHA-的運行速度比MD慢。

第四種.HMAC

HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/246651.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:16
下一篇 2024-12-12 13:16

相關推薦

  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • RabbitMQ和Yii2的消息隊列應用

    本文將探討RabbitMQ和Yii2之間的消息隊列應用。從概念、安裝和配置、使用實例等多個方面詳細講解,幫助讀者了解和掌握RabbitMQ和Yii2的消息隊列應用。 一、Rabbi…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • 粒子群算法Python的介紹和實現

    本文將介紹粒子群算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群算法的原理 粒子群算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29

發表回復

登錄後才能評論