A). Base64
Base64編碼的思想是是采用64個基本的ASCII碼字符對數(shù)據(jù)進行重新編碼指厌。它將需要編碼的數(shù)據(jù)拆分成字節(jié)數(shù)組芝硬。以3個字節(jié)為一組。按順序排列24位數(shù)據(jù)躲舌,再把這24位數(shù)據(jù)分成4組会通,即每組6位口予。再在每組的的最高位前補兩個0湊足一個字節(jié)。這樣就把一個3字節(jié)為一組的數(shù)據(jù)重新編碼成了4個字節(jié)涕侈。當所要編碼的數(shù)據(jù)的字節(jié)數(shù)不是3的整倍數(shù)沪停,也就是說在分組時最后一組不夠3個字節(jié)。這時在最后一組填充1到2個0字節(jié)裳涛。并在最后編碼完成后在結(jié)尾添加1到2個“=”木张。例:將對ABC進行BASE64編碼首先取ABC對應(yīng)的ASCII碼值。A(65)B(66)C(67)调违。再取二進制值A(chǔ)(01000001)B(01000010)C(01000011)窟哺,然后把這三個字節(jié)的二進制碼接起來(010000010100001001000011),再以6位為單位分成4個數(shù)據(jù)塊并在最高位填充兩個0后形成4個字節(jié)的編碼后的值(00010000)(00010100)(00001001)(00000011)技肩。藍色部分為真實數(shù)據(jù)且轨。再把這四個字節(jié)數(shù)據(jù)轉(zhuǎn)化成10進制數(shù)得(16)(20)(19)(3)浮声。最后根據(jù)BASE64給出的64個基本字符表,查出對應(yīng)的ASCII碼字符(Q)(U)(J)(D)旋奢。這里的值實際就是數(shù)據(jù)在字符表中的索引泳挥。注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
解碼過程就是把4個字節(jié)再還原成3個字節(jié)再根據(jù)不同的數(shù)據(jù)形式把字節(jié)數(shù)組重新整理成數(shù)據(jù)。
B). DES
DES是Data Encryption Standard(數(shù)據(jù)加密標準)的縮寫至朗。DES是一個分組加密算法屉符,他以64位為分組對數(shù)據(jù)加密。同時DES也是一個對稱算法:加密和解密用的是同一個算法锹引。它的密匙長度是56位(因為每個第8位都用作奇偶校驗)倦畅,密匙可以是任意的56位的數(shù)哲嘲,而且可以任意時候改變虐块。其中有極少量的數(shù)被認為是弱密匙并村,但是很容易避開他們。所以保密性依賴于密鑰腾啥。
DES對64(bit)位的明文分組M進行操作东涡,M經(jīng)過一個初始置換IP置換成m0,將m0明文分成左半部分和右半部分m0=(L0,R0)倘待,各32位長疮跑。然后進行16輪完全相同的運算,這些運算被稱為函數(shù)f凸舵,在運算過程中數(shù)據(jù)與密匙結(jié)合祖娘。經(jīng)過16輪后,左贞间,右半部分合在一起經(jīng)過一個末置換贿条,這樣就完成了。在每一輪中增热,密匙位移位,然后再從密匙的56位中選出48位胧辽。通過一個擴展置換將數(shù)據(jù)的右半部分擴展成48位峻仇,并通過一個異或操作替代成新的32位數(shù)據(jù),在將其置換換一次邑商。這四步運算構(gòu)成了函數(shù)f摄咆。然后,通過另一個異或運算人断,函數(shù)f的輸出與左半部分結(jié)合吭从,其結(jié)果成為新的右半部分,原來的右半部分成為新的左半部分恶迈。將該操作重復(fù)16次涩金,就實現(xiàn)了。
解密過程:在經(jīng)過所有的代替、置換步做、異或盒循環(huán)之后副渴,你也許認為解密算法與加密算法完全不同。恰恰相反全度,經(jīng)過精心選擇的各種操作煮剧,獲得了一個非常有用的性質(zhì):加密和解密使用相同的算法。DES加密和解密唯一的不同是密匙的次序相反将鸵。如果各輪加密密匙分別是K1,K2,K3….K16那么解密密匙就是K16,K15,K14…K1勉盅。
C). MD5
MD5的全稱是Message-DigestAlgorithm 5,Message-Digest泛指字節(jié)串(Message)的Hash變換顶掉,就是把一個任意長度的字節(jié)串變換成一定長的大整數(shù)菇篡。請注意我使用了"字節(jié)串"而不是"字符串"這個詞,是因為這種變換只與字節(jié)的值有關(guān)一喘,與字符集或編碼方式無關(guān)驱还。 MD5將任意長度的"字節(jié)串"變換成一個128bit的大整數(shù),并且它是一個不可逆的字符串變換算法凸克,換句話說就是议蟆,即使你看到源程序和算法描述,也無法將一個MD5的值變換回原始的字符串萎战,從數(shù)學(xué)原理上說咐容,是因為原始的字符串有無窮多個,這有點象不存在反函數(shù)的數(shù)學(xué)函數(shù)蚂维。
MD5的典型應(yīng)用是對一段Message(字節(jié)串)產(chǎn)生fingerprint(指紋)戳粒,以防止被"篡改"。舉個例子虫啥,你將一段話寫在一個叫readme.txt文件中蔚约,并對這個readme.txt產(chǎn)生一個MD5的值并記錄在案,然后你可以傳播這個文件給別人涂籽,別人如果修改了文件中的任何內(nèi)容苹祟,你對這個文件重新計算MD5時就會發(fā)現(xiàn)。如果再有一個第三方的認證機構(gòu)评雌,用MD5還可以防止文件作者的"抵賴"树枫,這就是所謂的數(shù)字簽名應(yīng)用。
MD5還廣泛用于加密和解密技術(shù)上景东,在很多操作系統(tǒng)中砂轻,用戶的密碼是以MD5值(或類似的其它算法)的方式保存的,用戶Login的時候斤吐,系統(tǒng)是把用戶輸入的密碼計算成MD5值搔涝,然后再去和系統(tǒng)中保存的MD5值進行比較厨喂,而系統(tǒng)并不"知道"用戶的密碼是什么。
一些黑客破獲這種密碼的方法是一種被稱為"跑字典"的方法体谒。有兩種方法得到字典杯聚,一種是日常搜集的用做密碼的字符串表,另一種是用排列組合方法生成的抒痒,先用MD5程序計算出這些字典項的MD5值幌绍,然后再用目標的MD5值在這個字典中檢索。即使假設(shè)密碼的最大長度為8故响,同時密碼只能是字母和數(shù)字傀广,共26+26+10=62個字符,排列組合出的字典的項數(shù)則是P(62,1)+P(62,2)....+P(62,8)彩届,那也已經(jīng)是一個很天文的數(shù)字了伪冰,存儲這個字典就需要TB級的磁盤組,而且這種方法還有一個前提樟蠕,就是能獲得目標賬戶的密碼MD5值的情況下才可以贮聂。
MD5 Base64 DES介紹
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梢杭,“玉大人温兼,你說我怎么就攤上這事∈角” “怎么了妨托?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長吝羞。 經(jīng)常有香客問我,道長内颗,這世上最難降的妖魔是什么钧排? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮均澳,結(jié)果婚禮上恨溜,老公的妹妹穿的比我還像新娘符衔。我一直安慰自己,他們只是感情好糟袁,可當我...
- 文/花漫 我一把揭開白布判族。 她就那樣靜靜地躺著,像睡著了一般项戴。 火紅的嫁衣襯著肌膚如雪形帮。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼君躺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了开缎?” 一聲冷哼從身側(cè)響起棕叫,我...
- 正文 年R本政府宣布鹏秋,位于F島的核電站尊蚁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侣夷。R本人自食惡果不足惜横朋,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望百拓。 院中可真熱鬧琴锭,春花似錦晰甚、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至地回,卻和暖如春扁远,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背落君。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 一、Base64 原理: base64的編碼都是按字符串長度萌京,以每3個8bit的字符為一組雁歌, 然后針對每組,首先獲...
- iOS在安全方面所采用的的加密方式:MD5、BASE64净神、(AES)對稱加密何吝、非對稱加密、DES(keychain...
- 在介紹加密算法之前, 先介紹一下 base64: 0. base64 Base64要求把每三個8Bit的字節(jié)轉(zhuǎn)換為...
- 關(guān)于網(wǎng)絡(luò)安全的數(shù)據(jù)加密部分坑夯,本來打算總結(jié)一篇博客搞定,沒想到東西太多抡四,這已是第三篇了柜蜈,而且這篇寫了多次,熬了多次夜...
- 開篇應(yīng)該先說明一下這是我寫的第一篇技術(shù)博客秘噪,水平高低的大家多提寶貴意見。最近做的一個和藍牙交互的iOS APP勉耀,其...