iOS SHA1

SHA1:安全散列算法(英語(yǔ):Secure Hash Algorithm)是一種能計(jì)算出一個(gè)數(shù)字消息所對(duì)應(yīng)到的略吨,長(zhǎng)度固定的字符串(又稱消息摘要)的算法誊役。由美國(guó)國(guó)家安全局(NSA)所設(shè)計(jì)拄显,并由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)發(fā)布;是美國(guó)的政府標(biāo)準(zhǔn)。曾被視為是MD5(更早之前被廣為使用的散列函數(shù))的后繼者糖荒。

對(duì)于長(zhǎng)度小于2^64位的消息靖苇,SHA1會(huì)產(chǎn)生一個(gè)160位(20字節(jié))的消息摘要席噩,也就是40個(gè)十六進(jìn)制數(shù)。當(dāng)接收到消息的時(shí)候贤壁,這個(gè)消息摘要可以用來(lái)驗(yàn)證數(shù)據(jù)的完整性悼枢。

特性:

不可以從消息摘要中復(fù)原信息,即不可逆脾拆;
兩個(gè)不同的消息不會(huì)產(chǎn)生同樣的消息摘要,(但會(huì)有1x10 ^ 48分之一的機(jī)率出現(xiàn)相同的消息摘要,一般使用時(shí)忽略)馒索。

底層原理

把原始消息(字符串,文件等)轉(zhuǎn)換成位字符串名船。SHA1算法只接受位作為輸入绰上。

  1. 補(bǔ)位
    消息必須進(jìn)行補(bǔ)位,以使其長(zhǎng)度在對(duì)512取模以后的余數(shù)是448渠驼。也就是說(shuō)蜈块,(補(bǔ)位后的消息長(zhǎng)度)%512 = 448。即使長(zhǎng)度已經(jīng)滿足對(duì)512取模后余數(shù)是448迷扇,補(bǔ)位也必須要進(jìn)行百揭。

  2. 補(bǔ)充長(zhǎng)度
    所謂的補(bǔ)長(zhǎng)度是將原始數(shù)據(jù)的長(zhǎng)度補(bǔ)到已經(jīng)進(jìn)行了補(bǔ)位操作的消息后面。通常用一個(gè)64位的數(shù)據(jù)來(lái)表示原始消息的長(zhǎng)度蜓席。

  3. 使用的常量. 一系列的常量字K(0), K(1), ... , K(79)器一,如果以16進(jìn)制給出。它們?nèi)缦拢?br> Kt = 0x5A827999 (0 <= t <= 19)
    Kt = 0x6ED9EBA1 (20 <= t <= 39)
    Kt = 0x8F1BBCDC (40 <= t <= 59)
    Kt = 0xCA62C1D6 (60 <= t <= 79).

  4. 使用的函數(shù). 在SHA1中我們需要一系列的函數(shù)瓮床。每個(gè)函數(shù)ft (0 <= t <= 79)都操作32位字B盹舞,C产镐,D并且產(chǎn)生32位字作為輸出。ft(B,C,D)可以如下定義
    ft(B,C,D) = (B AND C) or ((NOT B) AND D) ( 0 <= t <= 19)
    ft(B,C,D) = B XOR C XOR D (20 <= t <= 39)
    ft(B,C,D) = (B AND C) or (B AND D) or (C AND D) (40 <= t <= 59)
    ft(B,C,D) = B XOR C XOR D (60 <= t <= 79).

  5. 計(jì)算消息摘要必須使用進(jìn)行了補(bǔ)位和補(bǔ)長(zhǎng)度后的消息來(lái)計(jì)算消息摘要踢步。計(jì)算需要兩個(gè)緩沖區(qū)癣亚,每個(gè)都由5個(gè)32位的字組成,還需要一個(gè)80個(gè)32位字的緩沖區(qū)获印。第一個(gè)5個(gè)字的緩沖區(qū)被標(biāo)識(shí)為A述雾,B,C兼丰,D玻孟,E。第二個(gè)5個(gè)字的緩沖區(qū)被標(biāo)識(shí)為H0, H1, H2, H3, H4
    鳍征。80個(gè)字的緩沖區(qū)被標(biāo)識(shí)為W0, W1,..., W79
    另外還需要一個(gè)一個(gè)字的TEMP緩沖區(qū)黍翎。
    為了產(chǎn)生消息摘要,在第3.2部分中定義的512位(16個(gè)字)的數(shù)據(jù)塊M1, M2,..., Mn
    會(huì)依次進(jìn)行處理艳丛,處理每個(gè)數(shù)據(jù)塊Mi 包含80個(gè)步驟匣掸。
    在處理所有數(shù)據(jù)塊之前,緩沖區(qū){Hi} 被初始化為下面的值(16進(jìn)制)
    H0 = 0x67452301
    H1 = 0xEFCDAB89
    H2 = 0x98BADCFE
    H3 = 0x10325476
    H4 = 0xC3D2E1F0.
    現(xiàn)在開始處理M1, M2, ... , Mn氮双。為了處理 Mi,需要進(jìn)行下面的步驟
    (1). 將 Mi 分成 16 個(gè)字 W0, W1, ... , W15, W0 是最左邊的字
    (2). 對(duì)于 t = 16 到 79 令
    W[t] = S1(W[t-3] XOR W[t-8] XOR W[t-14] XOR W[t-16]).
    (3). 令 A = H0, B = H1, C = H2, D = H3, E = H4.
    (4) 對(duì)于 t = 0 到 79碰酝,執(zhí)行下面的循環(huán)
    TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt;
    E = D; D = C; C = S30(B); B = A; A = TEMP;
    (5). 令 H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E.
    在處理完所有的 Mn, 后,消息摘要是一個(gè)160位的字符串戴差,以下面的順序標(biāo)識(shí)
    H0 H1 H2 H3 H4.

SHA1與MD5對(duì)比

相同點(diǎn):因?yàn)槎呔蒑D4導(dǎo)出送爸,他們的強(qiáng)度和其他特性也是相似。
不同點(diǎn):

  1. 對(duì)強(qiáng)行攻擊的安全性:最顯著和最重要的區(qū)別是SHA-1摘要比MD5摘要長(zhǎng)32 位暖释。使用強(qiáng)行技術(shù)袭厂,產(chǎn)生任何一個(gè)報(bào)文使其摘要等于給定報(bào)摘要的難度對(duì)MD5是2-128數(shù)量級(jí)的操作,而對(duì)SHA-1則是2-160數(shù)量級(jí)的操作饭入。這樣嵌器,SHA-1對(duì)強(qiáng)行攻擊有更大的強(qiáng)度肛真。
  2. 對(duì)密碼分析的安全性:由于MD5的設(shè)計(jì)谐丢,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊蚓让。
  3. 速度:在相同的硬件上乾忱,SHA-1的運(yùn)行速度比MD5慢。
代碼
首先需要添加頭文件
#import<CommonCrypto/CommonDigest.h>
然后直接使用下面的方法就可以了
//sha1加密方式
- (NSString *) sha1:(NSString *)input
{
    //const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
    //NSData *data = [NSData dataWithBytes:cstr length:input.length];
    
     NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding];
    
    uint8_t digest[CC_SHA1_DIGEST_LENGTH];
    
    CC_SHA1(data.bytes, (unsigned int)data.length, digest);
    
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    
    for(int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x", digest[i]];
    }
    
    return output;
}
參考鏈接

MD5與SHA-1加密簡(jiǎn)介(附iOS加密方式)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末历极,一起剝皮案震驚了整個(gè)濱河市窄瘟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趟卸,老刑警劉巖蹄葱,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氏义,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡图云,警方通過(guò)查閱死者的電腦和手機(jī)惯悠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竣况,“玉大人克婶,你說(shuō)我怎么就攤上這事〉と” “怎么了情萤?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摹恨。 經(jīng)常有香客問(wèn)我筋岛,道長(zhǎng),這世上最難降的妖魔是什么晒哄? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任泉蝌,我火速辦了婚禮,結(jié)果婚禮上揩晴,老公的妹妹穿的比我還像新娘勋陪。我一直安慰自己,他們只是感情好硫兰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布诅愚。 她就那樣靜靜地躺著,像睡著了一般劫映。 火紅的嫁衣襯著肌膚如雪违孝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天泳赋,我揣著相機(jī)與錄音雌桑,去河邊找鬼。 笑死祖今,一個(gè)胖子當(dāng)著我的面吹牛校坑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播千诬,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼耍目,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了徐绑?” 一聲冷哼從身側(cè)響起邪驮,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傲茄,沒(méi)想到半個(gè)月后毅访,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沮榜,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年喻粹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敞映。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磷斧,死狀恐怖振愿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弛饭,我是刑警寧澤冕末,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站侣颂,受9級(jí)特大地震影響档桃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜憔晒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一藻肄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拒担,春花似錦嘹屯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至低零,卻和暖如春婆翔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掏婶。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工啃奴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雄妥。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓最蕾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親茎芭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揖膜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 密碼學(xué)認(rèn)知 認(rèn)知密碼鎖誓沸,古墓天王蓋地虎梅桩,。拜隧。宿百。趁仙。。美國(guó)的摩爾斯在1844年發(fā)明的垦页,故也被叫做摩爾斯電碼雀费。銀行,手機(jī)...
    臘雞程序員閱讀 473評(píng)論 0 0
  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,977評(píng)論 0 13
  • iOS SHA1 和 Base64 url_safe 加密 網(wǎng)上查找的資料SHA1加密后大部分獲取的是字符串痊焊,如果...
    XWSxws閱讀 1,087評(píng)論 0 0
  • 突然想起來(lái)盏袄,我們第一次出去玩,你認(rèn)真的拍了很多照片薄啥,還把它們打包存在電腦里辕羽,發(fā)了很多關(guān)于我們的說(shuō)說(shuō)。那時(shí)候這些小動(dòng)...
    Skyy_閱讀 237評(píng)論 0 1
  • 學(xué)習(xí)成長(zhǎng)為什么垄惧,然后呢 ——廣西賀州?樊登書店 平子2018.4.28 今日參加女兒思予班級(jí)家長(zhǎng)座談會(huì)刁愿,各位...
    平子1閱讀 91評(píng)論 0 0