⑴ pythonCryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256時簽名錯誤,python簽名如何與postman保持一致
=CryptoJS.HmacSHA256(stringSign, key); 4.加密 //我這里是使用16進制的方法 具體API 可以列印CryptoJS.enc let hashInHex= CryptoJS.enc.Hex.stringify(hash);
⑵ python之哈希演算法
哈希(Hash)演算法:`hash(object)`
哈希演算法將一個不定長的輸入,通過散列函數變換成一個定長的輸出,即散列值。是一種信息摘要演算法。對象的hash值比原對象擁有更低的內存復雜度。
它不同於加密。哈希(hash)是將目標文本轉換成具有相同長度的,不可逆的雜湊字元串,而加密則是將文本轉換為具有相同長度的,可逆的密文。
哈希(hash)演算法是不可逆的,只能由輸入產生輸出,不能由輸出產生輸入。而加密則是可逆的。即可以從輸入產生輸出,也可以反過來從輸出推出輸入。
對於hash演算法,不同的數據應該生成不同的哈希值。如果兩個不同的數據經過Hash函數計算得到的Hash值一樣。就稱為哈希碰撞(collision)。哈希碰撞無法被完全避免。只能降低發生概率。
好的hash函數會導致最少的hash碰撞。
*
可哈希性(hashable):
可哈希的數據類型為不可變的數據結構(如字元串srt,元組tuple,對象集objects等)。這種數據被稱為可哈希性。
不可哈希性:
不可哈希的數據類型,為可變的數據結構(如字典dict,列表list和集合set等)。
如果對可變的對象進行哈希處理,則每次對象更新時,都需要更新哈希表。這樣我們則需要將對象移至不同的數據集,這種操作會使花費過大。
因此設定不能對可變的對象進行hash處理。
**
**
Python3.x添加了hash演算法的隨機性,以提高安全性,因此對於每個新的python調用,同樣的數據源生成的結果都將不同。
哈希方法有(MD5, SHA1, SHA256與SHA512等)。常用的有SH256與SHA512。MD5與SHA1不再常用。
- MDH5 (不常用)
- SHA1 (不常用)
- SHA256 (常用)
- SHA512 (常用)
一種局部敏感的hash演算法,它產生的簽名在一定程度上可以表徵原內容的相似度。
> 可以被用來比較文本的相似度。
安裝simhash:
Pip3 install simhash
感知哈希演算法(perceptual Hash Algorithm)。用於檢測圖像和視頻的差異。
安裝Imagehash:
pip3 install Imagehash
比較下面兩張圖片的Imagehash值
可以看到兩張圖片的hash值非常相似。相似的圖片可以生成相似的哈希值是Imagehash的特點。
⑶ 求一個簡單的python數字加密解密演算法
用hash唄。
import hashlib
a = "a test string"
print hashlib.md5(a).hexdigest()
print hashlib.sha1(a).hexdigest()
print hashlib.sha224(a).hexdigest()
print hashlib.sha256(a).hexdigest()
print hashlib.sha384(a).hexdigest()
print hashlib.sha512(a).hexdigest()
針對str類型的。
加密的話,可以對最後得出的hash值再處理即可。比如左移,右移,某2位替換,某位加幾等等即可。
解密直接用逆序就可以了。
⑷ MD5,sha1,sha256分別輸出多少位啊
MD5輸出128位、SHA1輸出160位、SHA256輸出256位。
1、MD5消息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。
2、SHA1安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准 裡面定義的數字簽名演算法。對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。
3、sha256哈希值用作表示大量數據的固定大小的唯一值。數據的少量更改會在哈希值中產生不可預知的大量更改。SHA256 演算法的哈希值大小為 256 位。
(4)pythonsha256擴展閱讀:
MD5應用:
1、一致性驗證
MD5的典型應用是對一段信息產生信息摘要,以防止被篡改。具體來說文件的MD5值就像是這個文件的「數字指紋」。每個文件的MD5值是不同的,如果任何人對文件做了任何改動,其MD5值也就是對應的「數字指紋」就會發生變化。
比如下載伺服器針對一個文件預先提供一個MD5值,用戶下載完該文件後,用我這個演算法重新計算下載文件的MD5值,通過比較這兩個值是否相同,就能判斷下載的文件是否出錯,或者說下載的文件是否被篡改了。
2、數字簽名
MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被「篡改」。
例子:將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後可以傳播這個文件給,如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現(兩個MD5值不相同)。
如果再有一個第三方的認證機構,用MD5還可以防止文件作者的「抵賴」,這就是所謂的數字簽名應用。
3、安全訪問認證
MD5還廣泛用於操作系統的登陸認證上,如Unix、各類BSD系統登錄密碼、數字簽名等諸多方面。如在Unix系統中用戶的密碼是以MD5(或其它類似的演算法)經Hash運算後存儲在文件系統中。
當用戶登錄的時候,系統把用戶輸入的密碼進行MD5 Hash運算,然後再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。
即使暴露源程序和演算法描述,也無法將一個MD5的值變換回原始的字元串,從數學原理上說,是因為原始的字元串有無窮多個,這有點象不存在反函數的數學函數。