各種加密簡介

MD5:MD5(Message Digest Algorithm 5,消息摘要算法第五版)
可以把一個任意長度的字節(jié)串變換成一定長的(有16位和32位)十六進(jìn)制數(shù)字串?,F(xiàn)在的MD5密碼加密其實也并不是百分百的安全,至少一部分加密后的密碼可以在網(wǎng)上免費查出來,原理也相當(dāng)簡單,就是通過數(shù)據(jù)庫比對的方式查詢已知的加密密碼的MD5來獲取到原密碼.
MD5能夠生成數(shù)據(jù)或文件的“數(shù)字指紋”,就像每個人都有自己獨一無二的指紋一樣,MD5生成的這個“數(shù)字指紋”也是獨一無二的,可以用來驗證數(shù)據(jù)或文件的一致性。
MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特點:

  1. 壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。
  2. 容易計算:從原數(shù)據(jù)計算出MD5值很容易。
  3. 抗修改性:對原數(shù)據(jù)進(jìn)行任何改動,哪怕只修改1個字節(jié),所得到的MD5值都有很大區(qū)別。
  4. 強抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

MD5一般用來對數(shù)據(jù)進(jìn)行簽名,由于不能通過MD5密文解密出明文.所以MD5不能稱為一種加解密算法.

SHA (Secure Hash Algorithm,譯作安全散列算法) 是美國國家安全局 (NSA) 設(shè)計,美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST) 發(fā)布的一系列密碼散列函數(shù)。正式名稱為SHA的家族第一個成員發(fā)布于1993年。然而人們給它取了一個非正式的名稱SHA-0以避免與它的后繼者混淆。兩年之后, SHA-1,第一個 SHA 的后繼者發(fā)布了。 另外還有四種變體,曾經(jīng)發(fā)布以提升輸出的范圍和變更一些細(xì)微設(shè)計: SHA-224, SHA-256, SHA-384 和 SHA-512 (這些有時候也被稱做 SHA-2)。
SHA1始終把消息當(dāng)成一個位(bit)字符串來處理。本文中,一個“字”(Word)是32位,而一個“字節(jié)”(Byte)是8位。比如,字符串“abc”可以被轉(zhuǎn)換成一個位字符串:01100001 01100010 01100011。它也可以被表示成16進(jìn)制字符串:0x616263.
SHA一般用來對數(shù)據(jù)進(jìn)行簽名,由于不能通過SHA密文解密出明文.所以SHA不能稱為一種加解密算法.

AES:(英語:Advanced Encryption Standard,縮寫:AES)高級加密標(biāo)準(zhǔn).2006年,高級加密標(biāo)準(zhǔn)已然成為對稱密鑰加密中最流行的算法之一。美國國家標(biāo)準(zhǔn)技術(shù)研究所在2001年發(fā)布了高級加密標(biāo)準(zhǔn)(AES)。AES是一個對稱分組密碼算法,旨在取代DES成為廣泛使用的標(biāo)準(zhǔn)。根據(jù)使用的密碼長度,AES最常見的有3種方案,用以適應(yīng)不同的場景要求,分別是AES-128、AES-192和AES-256。

DES:全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法.DES算法的入口參數(shù)有三個:Key、Data、Mode。其中Key為7個字節(jié)共56位,是DES算法的工作密鑰;Data為8個字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密。此算法是對稱加密算法體系中的代表,在計算機網(wǎng)絡(luò)系統(tǒng)中廣泛使用.
3DES(或稱為Triple DES)是三重數(shù)據(jù)加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當(dāng)于是對每個數(shù)據(jù)塊應(yīng)用三次DES加密算法。由于計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設(shè)計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設(shè)計一種全新的塊密碼算法。

RSA:RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,當(dāng)時他們?nèi)硕荚诼槭±砉W(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。RSA算法基于一個十分簡單的數(shù)論事實:將兩個大素數(shù)相乘十分容易,但是想要對其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。RSA算法是第一個能同時用于加密和數(shù)字簽名的算法.RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。由于進(jìn)行的都是大數(shù)計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟件還是硬件實現(xiàn)。速度一直是RSA的缺陷。一般來說只用于少量數(shù)據(jù)加密。RSA的速度比對應(yīng)同樣安全級別的對稱密碼算法要慢1000倍左右。
rsa_public_key.pem
private_key.pem

Base64編碼
Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細(xì)規(guī)范。Base64編碼可用于在HTTP環(huán)境下傳遞較長的標(biāo)識信息。例如,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來將一個較長的唯一標(biāo)識符(一般為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數(shù)。
然而,標(biāo)準(zhǔn)的Base64并不適合直接放在URL里傳輸,因為URL編碼器會把標(biāo)準(zhǔn)Base64中的“/”和“+”字符變?yōu)樾稳纭?XX”的形式,而這些“%”號在存入數(shù)據(jù)庫時還需要再進(jìn)行轉(zhuǎn)換,因為ANSI SQL中已將“%”號用作通配符。
為解決此問題,可采用一種用于URL的改進(jìn)Base64編碼,它將標(biāo)準(zhǔn)Base64中的“+”和“/”分別改成了“-”和“_”,這樣就免去了在URL編解碼和數(shù)據(jù)庫存儲時所要作的轉(zhuǎn)換,避免了編碼信息長度在此過程中的增加,并統(tǒng)一了數(shù)據(jù)庫、表單等處對象標(biāo)識符的格式。

Base64編碼要求把3個8位字節(jié)(3x8=24)轉(zhuǎn)化為4個6位的字節(jié)(4x6=24),之后在6位的前面補兩個0,形成8位一個字節(jié)的形式。 如果剩下的字符不足3個字節(jié),則用0填充,輸出字符使用'=',因此編碼后輸出的文本末尾可能會出現(xiàn)1或2個'='。
為了保證所輸出的編碼位可讀字符,Base64制定了一個編碼表,以便進(jìn)行統(tǒng)一轉(zhuǎn)換。編碼表的大小為2^6=64,這也是Base64名稱的由來。
Base64是一種編解碼算法,任何人都可以對base64后的密文解碼得到明文,所以也不能稱為加解密算法.

Base64編碼表

碼值 字符 碼值 字符 碼值 字符 碼值 字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章主要講述在Mobile BI(移動商務(wù)智能)開發(fā)過程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲、登錄驗證這幾個方面涉及的加密...
    雨_樹閱讀 3,055評論 0 6
  • 概述 之前一直對加密相關(guān)的算法知之甚少,只知道類似DES、RSA等加密算法能對數(shù)據(jù)傳輸進(jìn)行加密,且各種加密算法各有...
    Henryzhu閱讀 3,232評論 0 14
  • 1.數(shù)據(jù)安全 01 攻城利器:Charles(公司中一般都使用該工具來抓包,并做網(wǎng)絡(luò)測試) 注意:Charles在...
    Lucky丶晴閱讀 1,624評論 0 9
  • 一、Base64 原理: base64的編碼都是按字符串長度,以每3個8bit的字符為一組, 然后針對每組,首先獲...
    謝謝生活閱讀 4,960評論 7 33
  • 雙臺風(fēng)又要來臨大福建了,早上還陽光普照,下午就陰雨綿綿...... 5點半下班時間到了,阿珠如往常一樣匆匆走到打卡...
    青澀居閱讀 264評論 0 0

友情鏈接更多精彩內(nèi)容