iOS的MD5 SHA1加密演算法的實現

2021-07-13 15:28:01 字數 1678 閱讀 4513

hash演算法是密碼學的基礎,比較常用的有md5和sha,最重要的兩條性質,就是不可逆和無衝突

所謂不可逆,就是當你知道x的hash值,無法求出x;

所謂無衝突,就是當你知道x,無法求出乙個y, 使x與y的hash值相同。

這兩條性質在數學上都是不成立的。因為乙個函式必然可逆,且由於hash函式的值域有限,理論上會有無窮多個不同的原始值,它們的hash值都相同。md5和sha做到的,是求逆和求衝突在計算上不可能,也就是正向計算很容易,而反向計算即使窮盡人類所有的計算資源都做不到。

廢話說到這,這裡我們看在ios中md5/sha1是怎樣實現的

說明:base64不是用來加密的。你看看經過base64編碼後的字串,全部都是由標準鍵盤上面的常規字元組成,這樣編碼後的字串在閘道器之間傳遞不會產生unicode字串不能識別或者丟失的現象。你再仔細研究下email就會發現其實email就是用base64編碼過後再傳送的。然後接收的時候再還原。有一種情況下用base64編碼也很好,比如乙個檔案,或者其他任何二進位制檔案。我可以把它編碼成字串。這樣用xml或者資料庫就能直接以文字的方式來儲存這些檔案了

要引入#import

sha1編碼

- (nsstring*) sha1

md5編碼

-(nsstring *) md5

- (nsstring *) sha1_base64

- (nsstring *) md5_base64

- (nsstring *) base64

接下來我們來呼叫看一下

nsstring *msg = @"123456789";

nslog(@"base64加密:%@",[msg base64]);

nslog(@"sha1:%@",[msg sha1]);

nslog(@"sha1_base64加密:%@",[msg sha1_base64]);

nslog(@"md5_base64加密:%@",[msg md5_bas

#輸出結果

2015-12-26

11:19:19.253 hash雜湊演算法[1132:153612] base64加密:mtizndu2nzg5

2015-12-26

11:19:19.253 hash雜湊演算法[1132:153612] sha1:f7c3bc1d808e04732adf679965ccc34ca7ae3441

2015-12-26

11:19:19.253 hash雜湊演算法[1132:153612] sha1_base64加密:98o8hycobhmq32ezzczdtkeunee=

2015-12-26

11:19:19.253 hash雜湊演算法[1132:153612] md5_base64加密:jfnnldi7rtif9rgfg2jncw==

2015-12-26

11:19:19.253 hash雜湊演算法[1132:153612] md5加密:25f9e794323b453885f5181f1b624d0b

密碼加密 md5 sha1 鹽值

python的hashlib提供了常見的摘要演算法,如md5,sha1等等。什麼是摘要演算法呢?摘要演算法又稱雜湊演算法 雜湊演算法。hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠...

C 獲取檔案MD5 SHA1

計算檔案的 md5 值 要計算 md5 值的檔名和路徑 md5 值16進製制字串 public string md5file string filename 計算檔案的 sha1 值 要計算 sha1 值的檔名和路徑 sha1 值16進製制字串 public string sha1file stri...

Python中摘要演算法MD5,SHA1講解

摘要演算法又稱雜湊演算法 雜湊演算法。它通過乙個函式,把任意長度的資料轉換為乙個長度固定的資料串 通常用16進製制的字串表示 摘要演算法就是通過摘要函式f 對任意長度的資料data計算出固定長度的摘要digest,目的是為了發現原始資料是否被人篡改過 不同的data計算出來的摘要不同 常見的摘要演算...