您的位置:首頁區塊鏈幣圈教程SHA加密算法簡介_SHA1算法原理及流程

SHA加密算法簡介_SHA1算法原理及流程

時間:2018-06-19來源:作者:zhangh我要評論(0)

SHA加密算法是安全哈希算法的簡稱,主要適用于數字簽名標準里面定義的數字簽名算法。聽著是不是覺得挺有趣的?下面就跟小編一起來看看SHA1算法原理及流程吧~有興趣的小伙伴可以關注哦~

快啦網

加密解密算法是區塊鏈技術中非常重要的一環,以比特幣為例,它一共有兩類加密算法:

非對稱加密算法

比特幣使用的非對稱加密算法是:橢圓曲線加密算法(Elliptic curve cryptography,ECC);

比特幣的公鑰和私鑰由橢圓曲線加密算法生成,私鑰可推出公鑰,但公鑰不能推出私鑰;

比特幣的私鑰用于對消息簽名,公鑰可以根據簽名驗證你是否擁有私鑰。

哈希算法

哈希算法又稱為散列算法,嚴格的講不能算作加密算法,因為它只能單向“加密”,即只能加密不能解密;

哈希算法把任意信息轉換成一個固定長度的字符串(消息摘要);

如果兩段信息相同,則生成的消息摘要相同;

如果兩段信息只有很小的不同,生成的消息摘要也會有很大的差別;

比特幣主要使用的哈希算法有:SHA-256、RIMPED160算法。

【加密解密算法探秘】這個系列會從程序的角度,分析各種加密解密算法的原理。

主要的加密算法

SHA

安全哈希算法(Secure Hash Algorithm)

MD5

消息摘要算法第五版(Message-Digest Algorithm 5)

DES

數據加密標準算法(Data Encryption Standard)

RC4

RC4加密算法(Ron Rivest)

RSA

RSA加密算法(Ron Rivest、Adi Shamir、Leonard Adleman)

在這些加密算法中:

SHA、MD5是哈希算法(只能加密);

DES、RC4是對稱加密算法(加密解密的密鑰相同);

RSA是非對稱加密算法(加密解密的密鑰不同)。

SHA算法簡介

1、SHA的全稱是Secure Hash Algorithm(安全散列算法);

2、SHA家族有五個算法,分別是SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,由美國國家安全局(NSA)所設計,并由美國國家標準與技術研究院(NIST)發布,是美國的政府標準;

3、SHA-224、SHA-256、SHA-384、SHA-512有時并稱為SHA-2;

4、SHA-1、SHA-224、SHA-256適用于長度不超過2^64二進制位的消息;

5、SHA-384、SHA-512適用于長度不超過2^128二進制位的消息;

6、SHA算法主要用于:數字簽名、數字時間戳、數字證書等。

SHA1算法原理及流程

下面以使用SHA1算法加密字符串“abc”為例,介紹SHA1加密的原理及流程。

1、原數據轉換為二進值字符串

根據ASCII碼表,字符'a'、'b'、'c'對應的ASCII碼分別為97、98、99,再將ASCII碼轉換為2進制值:

"abc" -> "97 98 99" -> "01100001 01100010 01100011"

即“abc”轉換后的二進制字符串為:

011000010110001001100011

2、補位

上一步轉換的二進制字符串需要進行補位,使其長度對512取模后的余數是448;

補位時,先補一個1,再補0,直到長度滿足對512取模后的余數是448;

補位時,至少補1位,最多補512位;

如果補位前的消息長度為447,則補1位;如果補位前的消息長度為448,則補512位;

補位后的長度為:512*n+448(n>=0)

下面以“abc”為例,展示補位過程:

原始二進值信息:

01100001 01100010 01100011

補位第1步:補一個1

01100001 01100010 01100011 1

補位第2步:補423個0

01100001 01100010 01100011 10...0

這里,“abc”補位完成后是448位,即 448/8 = 56 字節。

用16進制表示,是:

61626380 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000

快啦網

3、補長度

補長度,是指把原始數據的長度補到已經進行補位操作的消息后面;

通常,用一個64位的數據來表示原始消息的長度。

對于“abc”,它的長度是3個字節,即24位(24個比特),因此對于“abc”,補的64位長度保存的信息就是“24”的二進制表示,即:

0....011000(共64位)

補長度后,用16進制表示,是:

61626380 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000018

如果原始消息長度超過512,則需要把它補成512的倍數。

這樣,就把整個消息分成了一個個512位的數據塊,再分別處理每個數據塊,得到消息摘要。

4、計算消息摘要

計算消息摘要比較復雜,會用到一些常量和一些函數,這部分放到具體的代碼中進行分析。

最終生成的消息摘要,是一個160位的字符串。

另外需要注意的是,SHA1算法采用的存儲模式是大端存儲(Big-Endian)。

Big-Endian: 低地址存放高位,以unsigned int value = 0x12345678為例,如下:

高地址

---------------

buf[3] (0x78) -- 低位

buf[2] (0x56)

buf[1] (0x34)

buf[0] (0x12) -- 高位

---------------

低地址

好啦,以上就是今天小編給大家帶來的關于SHA1算法原理及流程的全部內容啦~想獲取更多資訊可以關注快啦網哦~

今晚买三肖中特