日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

加密算法之SHA(SHA1、SHA256)

發(fā)布時間:2023/12/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 加密算法之SHA(SHA1、SHA256) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

? ? ? ? 本章講解典型的加密算法SHA(SHA1、SHA256)

方法

1、概念

????????安全散列算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼散列函數(shù)家族,是FIPS所認(rèn)證的安全散列算法。能計算出一個數(shù)字消息所對應(yīng)到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不同,它們對應(yīng)到不同字符串的機(jī)率很高。
????????SHA1(英語:Secure Hash Algorithm 1,中文名:安全散列算法1)是一種密碼散列函數(shù),美國國家安全局設(shè)計,并由美國國家標(biāo)準(zhǔn)技術(shù)研究所(NIST)發(fā)布為聯(lián)邦數(shù)據(jù)處理標(biāo)準(zhǔn)(FIPS)。SHA-1可以生成一個被稱為消息摘要的160位(20字節(jié))散列值,散列值通常的呈現(xiàn)形式為40個十六進(jìn)制數(shù)。

????????SHA256是SHA2的一種,可產(chǎn)生256位的哈希值,較SHA1更加的安全。

2、SHA1加密原理

????????我們?nèi)匀灰詥卧~ China 為例,如何將其進(jìn)行MD5加密呢?

????????第一步:首先將China單詞轉(zhuǎn)化為ASCII碼的十六進(jìn)制表示方式

China的十六進(jìn)制為:43 68 69 6E 61

????????第二步:對得到的數(shù)據(jù)??4368696E61 進(jìn)行填充附加,使其能夠被512整除。

????????對于任意長度的明文,SHA1的明文分組過程與MD5相類似,首先需要對明文添加位數(shù),使明文總長度為448(mod512)位。在明文后添加位的方法是第一個添加位是l,其余都是0。然后將真正明文的長度(沒有添加位以前的明文長度)以64位表示,附加于前面已添加過位的明文后,此時的明文長度正好是512位的倍數(shù)。與MD5不同的是SHA1的原始報文長度不能超過2的64次方,另外SHA1的明文長度從低位開始填充。

????????第三步:將得到數(shù)據(jù)進(jìn)行拆分,按照512位分塊。SHA1有4輪運算,每一輪包括20個步驟(一共80步),最后產(chǎn)生160位摘要。

3、注意事項

? ? ? ? 與MD5相比,SHA1有以下優(yōu)缺點:

????????最顯著和最重要的區(qū)別是SHA1摘要比MD5摘要長32 位。使用強(qiáng)行技術(shù),產(chǎn)生任何一個報文使其摘要等于給定報摘要的難度對MD5是2^128數(shù)量級的操作,而對SHA1則是2^160數(shù)量級的操作。這樣,SHA1對強(qiáng)行攻擊有更大的強(qiáng)度。相對的在相同的硬件上,SHA1的運行速度比MD5慢。

? ? ? ? 但是就目前的情況來看,SHA1也很容易被攻破,為了安全起見,可以選擇諸如SHA256,SHA512等高強(qiáng)度的算法來提升安全性。

4、Java實現(xiàn)SHA1加密

package cn.edu.ccut;import java.security.MessageDigest;public class SHA1Test {public static String shaEncode(String inStr) throws Exception {MessageDigest sha = null;try {sha = MessageDigest.getInstance("SHA");} catch (Exception e) {System.out.println(e.toString());e.printStackTrace();return "";}byte[] byteArray = inStr.getBytes("UTF-8");byte[] md5Bytes = sha.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++) {int val = ((int) md5Bytes[i]) & 0xff;if (val < 16) {hexValue.append("0");}hexValue.append(Integer.toHexString(val));}return hexValue.toString();}public static void main(String args[]) throws Exception {String str = "China";System.out.println("SHA1加密前:" + str);System.out.println("SHA1加密后:" + shaEncode(str));} }

運行結(jié)果如下:

?

總結(jié)

以上是生活随笔為你收集整理的加密算法之SHA(SHA1、SHA256)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。