ios中的MD5加密方式

關(guān)于加密鲫骗,首先得理解下加密的概念赐俗。

明文 :加密前的信息
密文 :加密后的信息
加密算法: 加密或解密的算法
密鑰:算法使用的鑰匙

舉例說(shuō)明

明文:123456
密文:234567
加密算法:每位加1
加密密鑰:1

本文簡(jiǎn)單介紹下經(jīng)典的哈希算法中的一種MD5加密排吴,一般使用的32位加密和16位加密泪电。兩種加密方法本質(zhì)上是沒(méi)有區(qū)別的般妙,16位加密是基于32位加密,也就是說(shuō)從32位加密后的密文中提取16位出來(lái)相速,作為密文碟渺。

了解加密算法之前,先認(rèn)識(shí)在計(jì)算機(jī)中位和字節(jié)和字的概念

1突诬、位(bit)
來(lái)自英文bit苫拍,音譯為“比特”芜繁,表示二進(jìn)制位。
位是計(jì)算機(jī)內(nèi)部數(shù)據(jù)儲(chǔ)存的最小單位绒极,11010100是一個(gè)8位二進(jìn)制數(shù)骏令。
一個(gè)二進(jìn)制位只可以表示0和1兩種狀態(tài)(21);
兩個(gè)二進(jìn)制位可以表示00垄提、01榔袋、10、11四種(22)狀態(tài)铡俐;
三位二進(jìn)制數(shù)可表示八種狀態(tài)(23)……凰兑。
2、字節(jié)(byte)
字節(jié)來(lái)自英文Byte审丘,音譯為“拜特”吏够,習(xí)慣上用大寫(xiě)的“B”表示。
字節(jié)是計(jì)算機(jī)中數(shù)據(jù)處理的基本單位滩报。
計(jì)算機(jī)中以字節(jié)為單位存儲(chǔ)和解釋信息锅知,規(guī)定一個(gè)字節(jié)由八個(gè)二進(jìn)制位構(gòu)成,即1個(gè)字節(jié)等于8個(gè)比特(1Byte=8bit)脓钾。
八位二進(jìn)制數(shù)最小為00000000售睹,最大為11111111;通常1個(gè)字節(jié)可以存入一個(gè)ASCII碼惭笑,2個(gè)字節(jié)可以存放一個(gè)漢字國(guó)標(biāo)碼侣姆。
3生真、字
計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理時(shí)沉噩,一次存取、加工和傳送的數(shù)據(jù)長(zhǎng)度稱(chēng)為字(word)柱蟀。
一個(gè)字通常由一個(gè)或多個(gè)(一般是字節(jié)的整數(shù)位)字節(jié)構(gòu)成川蒙。例如286微機(jī)的字由2個(gè)字節(jié)組成,它的字長(zhǎng)為16长已;486微機(jī)的字由4個(gè)字節(jié)組成畜眨,它的字長(zhǎng)為32位機(jī)。
計(jì)算機(jī)的字長(zhǎng)決定了其CPU一次操作處理實(shí)際位數(shù)的多少术瓮,由此可見(jiàn)計(jì)算機(jī)的字長(zhǎng)越大康聂,其性能越優(yōu)越。

接下來(lái)簡(jiǎn)單看下32位的加密方法在ios中的實(shí)現(xiàn)

+ (NSString *)getMd5_32Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase{
// 參數(shù) srcString 傳進(jìn)來(lái)的字符串
// 參數(shù) isUppercase 是否需要大小寫(xiě)
    const char *cStr = [srcString UTF8String];// 先轉(zhuǎn)為UTF_8編碼的字符串
    unsigned char digest[CC_MD5_DIGEST_LENGTH];//設(shè)置一個(gè)接受字符數(shù)組
    CC_MD5( cStr, (int)strlen(cStr), digest );// 把str字符串轉(zhuǎn)換成為32位的16進(jìn)制數(shù)列胞四,存到了result這個(gè)空間中
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
    {
        [result appendFormat:@"%02x", digest[i]];//將16字節(jié)的16進(jìn)制轉(zhuǎn)成32字節(jié)的16進(jìn)制字符串
    }
//    x表示十六進(jìn)制恬汁,%02X  意思是不足兩位將用0補(bǔ)齊,如果多余兩位則不影響
    if (isUppercase) {
        return   [result uppercaseString];
    }else{
        return result;
    }
    
}

關(guān)于一些重要的方法的詳解
官方的封裝好的MD5加密方法

extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)官方封裝好的加密方法

把str字符串轉(zhuǎn)換成了32位的16進(jìn)制數(shù)列(這個(gè)過(guò)程不可逆轉(zhuǎn)) 存儲(chǔ)到了result這個(gè)空間中

關(guān)于拼接字符串的占位符使用

x表示十六進(jìn)制辜伟,%02X  意思是不足兩位將用0補(bǔ)齊氓侧,如果多余兩位則不影響
NSLog("%02X", 0x888);  //888
NSLog("%02X", 0x4); //04

16位的加密方法在ios中的實(shí)現(xiàn)

+ (NSString *)getMd5_16Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase{
    //提取32位MD5散列的中間16位
    NSString *md5_32Bit_String=[self getMd5_32Bit_String:srcString isUppercase:NO];
    NSString *result = [[md5_32Bit_String substringToIndex:24] substringFromIndex:8];//即9~25位
    
    if (isUppercase) {
        return   [result uppercaseString];
    }else{
        return result;
    }
    
}

明文加密使用

    NSString*test=@"123";
    NSString*md5_16=[GBEncodeTool getMd5_16Bit_String:test isUppercase:YES];
    NSLog(@"md5_16-->%@",md5_16);
// 打印數(shù)值: md5_16-->AC59075B964B0715
    NSString*md5_32=[GBEncodeTool getMd5_32Bit_String:test isUppercase:YES];
    NSLog(@"md5_32-->%@",md5_32);
// 打印數(shù)值: md5_16-->md5_32-->202CB962AC59075B964B07152D234B70
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脊另,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子约巷,更是在濱河造成了極大的恐慌偎痛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件独郎,死亡現(xiàn)場(chǎng)離奇詭異踩麦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)囚聚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)靖榕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人顽铸,你說(shuō)我怎么就攤上這事茁计。” “怎么了谓松?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵星压,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鬼譬,道長(zhǎng)娜膘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任优质,我火速辦了婚禮竣贪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巩螃。我一直安慰自己演怎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布避乏。 她就那樣靜靜地躺著爷耀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拍皮。 梳的紋絲不亂的頭發(fā)上歹叮,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音铆帽,去河邊找鬼咆耿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爹橱,可吹牛的內(nèi)容都是我干的萨螺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屑迂!你這毒婦竟也來(lái)了浸策?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惹盼,失蹤者是張志新(化名)和其女友劉穎庸汗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體手报,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚯舱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掩蛤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枉昏。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揍鸟,靈堂內(nèi)的尸體忽然破棺而出兄裂,到底是詐尸還是另有隱情,我是刑警寧澤阳藻,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布晰奖,位于F島的核電站,受9級(jí)特大地震影響腥泥,放射性物質(zhì)發(fā)生泄漏匾南。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一蛔外、第九天 我趴在偏房一處隱蔽的房頂上張望蛆楞。 院中可真熱鬧,春花似錦夹厌、人聲如沸豹爹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)帅戒。三九已至灯帮,卻和暖如春崖技,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钟哥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工迎献, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腻贰。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓吁恍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冀瓦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 一伴奥、Base64 原理: base64的編碼都是按字符串長(zhǎng)度,以每3個(gè)8bit的字符為一組翼闽, 然后針對(duì)每組拾徙,首先獲...
    謝謝生活閱讀 4,805評(píng)論 7 33
  • 山來(lái)霧北去, 日暖照高晴感局。 ...
    飄渺孤魂影閱讀 191評(píng)論 2 10
  • 最新的提交在 2016/07/14 的時(shí)候尼啡,c89c25f27d115c1928104b06dbe6eabf005...
    liyb閱讀 549評(píng)論 0 0
  • 華燈流金,最是姚江晚询微。 夏風(fēng)巡江崖瞭,拂去行人汗。 漁舟對(duì)吟撑毛,遙聽(tīng)闌珊處书聚。 一江玉光,牽入詩(shī)夢(mèng)里藻雌。 繁華如斯寺惫,應(yīng)是好光...
    遠(yuǎn)曉閱讀 403評(píng)論 1 2
  • 成績(jī)-這個(gè)詞語(yǔ)在我讀讀初三之前我根本毫不在乎,但是這個(gè)之前我毫不在乎的詞語(yǔ)現(xiàn)在卻在我的認(rèn)知和生活里起了很大的作用蹦疑。...
    lixiaoshan閱讀 245評(píng)論 0 1