31.MD5加密

先說一下:MD5加密可破解,每一個原密碼對應(yīng)一個不變的MD5加密的密碼
效果:

MD5加密demo 密碼: c1j2

MD5加密

一.簡述MD5:

  • 1.MD5即Message-Digest Algorithm 5辫继,用于確保信息傳輸完整一致。是計算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法滚躯、哈希算法)恍飘,主流編程語言普遍已有MD5實現(xiàn)诊杆。MD5的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的十六進(jìn)制數(shù)字串)船侧。(引用自百度百科)

  • 2.MD5 不是一種加密算法蔬螟,只是用來做文件校驗的。比如官方發(fā)布一個軟件铁孵,同時公布一個MD5校驗碼锭硼。如果你下載下來的軟件,通過MD5校驗后蜕劝,和官方公布的不同檀头,就說明你這個軟件已經(jīng)被人修改過了,不是官方原版熙宇。MD5算法都是統(tǒng)一的鳖擒,沒有密鑰之類的東西溉浙。相同的字符串通過MD5轉(zhuǎn)碼后烫止,都能夠獲得相同的MD5碼。但是戳稽,MD5是一種摘要算法馆蠕,是不可逆的,但是網(wǎng)上在線可以解密期升,也就是說,通過MD5值不能還原原始數(shù)據(jù)互躬。加密播赁,解密之類的還是用DES/AES + BASE64之類的算法來實現(xiàn)。

二.MD5的用法

  • 1.在Objective-C中我們怎么進(jìn)行MD5加密吼渡,首先我們需要包含頭文件是

    #import <CommonCrypto/CommonDigest.h>
    

digest [da?'d??st] vt. 消化容为;吸收;融會貫通
crypto ['kript?u] adj. 秘密的寺酪,隱蔽的坎背,不公開的

  • 2.其實用法跟簡單,就一個調(diào)用方法(兩種方法)
    1.第一種
    [self md5:@"要加密的東西" ]; //可以打印出來就是加密好的字符串,可以在線解密
    - (NSString *)md5:(NSString *)str
    {
    const char *cStr = [str UTF8String];
    unsigned char result[16];
    CC_MD5(cStr, (CC_LONG)strlen(cStr), result); // This is the md5 call
    return [NSString stringWithFormat:
    @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
    result[0], result[1], result[2], result[3],
    result[4], result[5], result[6], result[7],
    result[8], result[9], result[10], result[11],
    result[12], result[13], result[14], result[15]
    ];
    }

    2.第二種

    - (NSString *)md5HexDigest:(NSString*)password
     {
      const char *original_str = [password UTF8String];
      unsigned char result[CC_MD5_DIGEST_LENGTH];
      CC_MD5(original_str, strlen(original_str), result);
      NSMutableString *hash = [NSMutableString string];
     for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
     {
         /*
          %02X是格式控制符:‘x’表示以16進(jìn)制輸出,‘02’表示不足兩位寄雀,前面補(bǔ)0得滤;
         */
         [hash appendFormat:@"%02X", result[i]];
     }
      NSString *mdfiveString = [hash lowercaseString];
      return mdfiveString;
    }
    

1.char[16]和%02x的來歷:
其中%02x是格式控制符:‘x’表示以16進(jìn)制輸出,‘02’表示不足兩位盒犹,前面補(bǔ)0懂更;如‘f’輸出為0f,‘1f3’則輸出1f3;本來一般的都會介紹到這里就完了急膀,我想多介紹一下代碼中result是個字符數(shù)組沮协,那為什么是[16]呢,這是因為MD5算法最后生成的是128位卓嫂,而在計算機(jī)的最小存儲單位為字節(jié)皂股,1個字節(jié)是8位,對應(yīng)一個char類型命黔,計算可得需要16個char呜呐。所以result是[16]。那么為什么輸出的格式一定是%02x呢悍募,而不是其它呢蘑辑。這也是有原因的:因為約定MD5一般是以16進(jìn)制的格式輸出,那么其實這個問題就轉(zhuǎn)換為把128個0和1以16進(jìn)制來表示坠宴,每4位二進(jìn)制對應(yīng)一個16進(jìn)制的元素洋魂,則需要32個16進(jìn)制的元素,如果元素全部為0喜鼓,放到char的數(shù)組中副砍,正常是不會輸出,如00001111庄岖,以%x輸出豁翎,則是f,那么就會丟失0;但如果以%02x表示則輸出結(jié)果是0f隅忿,正好是轉(zhuǎn)換的正確結(jié)果心剥。(摘抄)
2.對于16位MD5加密的解釋


至于人們說的16位MD5加密邦尊,其實是這樣的:舉例如果產(chǎn)生的MD5加密字符串是:01234567abcdefababcdefab76543210,則16位的MD加密字符是abcdefababcdefab优烧,也就是只是截取了中間的16位蝉揍。實際上這個操作已經(jīng)不是MD5加密算法所包括的,而應(yīng)當(dāng)是對MD5加密算法結(jié)果的二次處理畦娄。其它的64位和大小寫什么的又沾,都屬于對MD5算法結(jié)果的二次處理。因為MD5算法產(chǎn)生的結(jié)果就是128bit熙卡,128個二進(jìn)制數(shù)字捍掺。

三.簡單介紹一下加密

 *
  1、簡單的概念

    明文:加密前的信息
    密文:機(jī)密后的信息
    加密算法:加密或解密的算法
    密鑰:算法使用的鑰匙(讀作miyao再膳,正確應(yīng)該是miyue挺勿,但是大家都讀miyao)
 *
     簡單的例子

     將123456每位數(shù)字都加1后得到234567,
     其中123456就是明文喂柒,234567就是密文不瓶,加密密鑰就是1,加密算法是每位加

 * 2灾杰、加密算法種類
     按照加密的方式我們可以將加密算法大體分成一下三種:
 *      對稱加密算法(加密和解密算法是對稱的可能有點(diǎn)抽象你可以理解成同一把鑰匙)
 *      非對稱加密算法(加密和解密算法是非對稱的可以理解成加密的時候是一把鑰匙解密的時候是一把鑰匙蚊丐,典型的就是rsa公鑰和私鑰)
 *      經(jīng)典哈希算法(哈希算法是一種散列算法,有個特殊性是它是不可逆只能通過窮舉法超大量的計算才可能算出艳吠,一般幾率很小麦备,還有就是你同一段的明文兩次加密出來的結(jié)果是不一樣的)
 *
 * 3、算法舉例
 *    對稱加密算法:DES算法昭娩,3DES算法凛篙,TDEA算法,Blowfish算法栏渺,RC5算法呛梆,IDEA算法,AES算法磕诊。
 *    非對稱加密算法:RSA填物、Elgamal、背包算法霎终、Rabin滞磺、D-H、ECC莱褒。
 *    經(jīng)典的哈希算法:MD2击困、MD4、MD5 和 *       
 *    SHA-1(目的是將任意長輸入通過算法變?yōu)楣潭ㄩL輸出保礼,且保證輸入變化一點(diǎn)輸出都不同沛励,且不能反向解密)
 * 4、 今天我們來說一下我們在來發(fā)中常用的算法暫時只講:MD5炮障、Base64目派、sha、AES胁赢、rsa
 *    補(bǔ)充:RSA加密算法中比較重要的加密算法
 *    非對稱加密算法可能是世界上最重要的算法企蹭,它是當(dāng)今電子商務(wù)等領(lǐng)域的基石。簡而言之智末,非對稱加密就是指加密公鑰和解密密鑰是不同的谅摄,而且加密公鑰和解密密鑰是成對出現(xiàn)。非對稱加密又叫公鑰加密系馆,也就是說成對的密鑰送漠,其中一個是對外公開的,所有人都可以獲得由蘑,人們稱之為公鑰闽寡;而與之相對應(yīng)的稱為私鑰,只有這對密鑰的生成者才能擁有尼酿。
 *    對于一個私鑰爷狈,有且只有一個與之對應(yīng)的公鑰。公鑰公開給任何人裳擎,私鑰通常是只有生成者擁有涎永。公/私鑰通常是1024位或者2048位,越長安全系數(shù)越高鹿响,但是解密越困難羡微。盡管拿到了公鑰,如果沒有私鑰惶我,要想解密那幾乎是不可能的拷淘,至少現(xiàn)在在世界上還沒有人公開出來說成功解密的。
 * 5. 先移動端給服務(wù)器傳遞通過RSA公鑰加密后的數(shù)據(jù),參數(shù)包括DES的密鑰(密鑰是隨機(jī)生成的八位字符串) 和 相關(guān)參數(shù)信息指孤,服務(wù)器通過私鑰解密信息數(shù)據(jù)启涯,里面包括DES密鑰和 相關(guān)參數(shù)信息,服務(wù)器再通過此DES密鑰加密返回數(shù)據(jù)給移動端恃轩,移動端通過此DES密鑰進(jìn)行解密獲取數(shù)據(jù)结洼。
 *    優(yōu)點(diǎn):因為RSA不容易解密,即使被攔截解密了叉跛,獲取了DES的密鑰松忍,因為DES的密鑰是隨機(jī)生成的,也只能解密這一次的數(shù)據(jù)信息筷厘,不會對其他數(shù)據(jù)信息產(chǎn)生影響鸣峭。(注:DES的密鑰每一次都要重新隨機(jī)生成宏所,也就是一個密鑰只完成這一次的數(shù)據(jù)傳遞)
 *    總結(jié):公鑰和密鑰成對出現(xiàn),其中公鑰負(fù)責(zé)加密 摊溶,私鑰負(fù)責(zé)解密
 *
 */

四.在線的加密和解密

其他博客

記得點(diǎn)喜歡哦!!!嘿嘿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爬骤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子莫换,更是在濱河造成了極大的恐慌霞玄,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拉岁,死亡現(xiàn)場離奇詭異坷剧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)喊暖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門惫企,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陵叽,你說我怎么就攤上這事雅任。” “怎么了咨跌?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵沪么,是天一觀的道長。 經(jīng)常有香客問我锌半,道長禽车,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任刊殉,我火速辦了婚禮殉摔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘记焊。我一直安慰自己逸月,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布遍膜。 她就那樣靜靜地躺著碗硬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓢颅。 梳的紋絲不亂的頭發(fā)上恩尾,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音挽懦,去河邊找鬼翰意。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冀偶。 我是一名探鬼主播醒第,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼进鸠!你這毒婦竟也來了稠曼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤堤如,失蹤者是張志新(化名)和其女友劉穎蒲列,沒想到半個月后窒朋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搀罢,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年侥猩,在試婚紗的時候發(fā)現(xiàn)自己被綠了榔至。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡欺劳,死狀恐怖唧取,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情划提,我是刑警寧澤枫弟,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鹏往,受9級特大地震影響淡诗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伊履,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一韩容、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唐瀑,春花似錦群凶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至力穗,卻和暖如春溢陪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睛廊。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工形真, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓咆霜,卻偏偏與公主長得像邓馒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蛾坯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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

  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置( [NSUserDefaul...
    彬至睢陽閱讀 2,935評論 0 7
  • 常見的加密算法 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ D...
    小小啄閱讀 3,122評論 0 9
  • 首先羅列一些知識點(diǎn): 1.加密算法通常分為對稱性加密算法和非對稱性加密算法:對于對稱性加密算法脉课,信息接收雙方都需事...
    JonesCxy閱讀 1,388評論 2 4
  • 軟件開發(fā)過程中救军,對數(shù)據(jù)進(jìn)行加密是保證數(shù)據(jù)安全的重要手段,常見的加密有Base64加密和MD5加密倘零。Base64加密...
    Billy_W閱讀 1,803評論 0 0
  • MD5和base64加密 在網(wǎng)絡(luò)發(fā)展趨勢日漸迅猛的今天唱遭,數(shù)據(jù)的安全性也越來越重要。因此呈驶,如何保證用戶數(shù)據(jù)的安全就成...
    Joker_King閱讀 5,923評論 11 28