加密算法--概念篇

在最近的面試中, 被問(wèn)到了加密算法,雖然回答了面試官的問(wèn)題,自己總覺對(duì)于概念理解不是特別到位。本篇主要是對(duì)加密算法做一個(gè)整體的了解,其中所提到每一種算法,如果去深究,都不是一兩篇文章能說(shuō)清楚的,鑒于此,本篇不去談算法的實(shí)現(xiàn),不去比較算法的性能,只是梳理一些基本概念。

1. 基本術(shù)語(yǔ)

在密碼學(xué)中,加密是指把明文通過(guò)密鑰,轉(zhuǎn)換為難以理解的數(shù)據(jù)(密文)的過(guò)程。 解密是指把難以理解的數(shù)據(jù)(密文)轉(zhuǎn)換為明文的過(guò)程。

2. 加密算法的分類:加密算法分為對(duì)稱加密算法和非對(duì)稱加密算法(公開密鑰加密算法)。

(1) 對(duì)稱加密算法是指加密和解密用的是同一把密鑰。優(yōu)點(diǎn):加密、解密速度快。 缺點(diǎn):密鑰不好維護(hù)。

(2) 非對(duì)稱加密算法(Asymmetric ?Cryptograph Algorithm),加密和解密使用不同的密鑰,使用公鑰(Public key) 加密,使用私鑰(Private key)解密。

3. 常見的加密算法

3.1 對(duì)稱加密算法

(1) DES (Data Encryption Standard)美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)算法,是1972年美國(guó)IBM公司研制。?明文按64位進(jìn)行分組,密鑰長(zhǎng)64位,密鑰事實(shí)上是56位參與DES運(yùn)算(第8、16、24、32、40、48、56、64位是校驗(yàn)位, 使得每個(gè)密鑰都有奇數(shù)個(gè)1)分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。了解更多

(2) 3DES ?(Triple DES)三重?cái)?shù)據(jù)加密數(shù)據(jù)塊算法。相當(dāng)于對(duì)每個(gè)數(shù)據(jù)快進(jìn)行三次DES加密。由于計(jì)算機(jī)計(jì)算能力的提升,DES算法容易被破解,3DES是通過(guò)增加數(shù)據(jù)塊密鑰的長(zhǎng)度,來(lái)增加暴力破解的難度,而不是一種全新的加密算法。

(3)AES? (Advance Encryption Standard)高級(jí)加密標(biāo)準(zhǔn),在密碼學(xué)中又稱為Rijndael 算法,是美國(guó)聯(lián)邦政府采用的一種區(qū)域塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)為了替代原先的DES標(biāo)準(zhǔn),2001有NIST發(fā)布,并與2002年5月26日成為標(biāo)準(zhǔn)。了解更多

(4) RC2/RC4 ,RC2和RC4由RSA數(shù)據(jù)安全公司的里維斯特(RonRivest)設(shè)計(jì),是兩種可變密鑰長(zhǎng)度的加密算法,而且都是RSA數(shù)據(jù)安全公司的專有算法。有關(guān)兩種算法的細(xì)節(jié)尚未公開披露。

RC2是一種可變密鑰長(zhǎng)度的對(duì)稱分組密碼,打算作為DES的一種代替物。它以64比特分組加密數(shù)據(jù)。據(jù)公司聲稱,RC2軟件實(shí)現(xiàn)的速度為DES的兩倍。

Rc4是一種可變密鑰長(zhǎng)度的對(duì)稱流密碼。據(jù)公司聲稱.其速度為DES的10~100倍。兩種算法的編碼規(guī)模非常緊湊,其速度與密鑰長(zhǎng)度無(wú)關(guān)。


3.2 非對(duì)稱加密算法

(1) RSA ? ?是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當(dāng)時(shí)他們?nèi)硕荚?a target="_blank" rel="nofollow">麻省理工學(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。了解更多

(2) ECC (Elliptic Curves Cryptography)橢圓曲線加密算法,最初由Koblitz和Miller兩人于1985年提出,其數(shù)學(xué)基礎(chǔ)是利用橢圓曲線上的有理點(diǎn)構(gòu)成Abel加法群上橢圓離散對(duì)數(shù)的計(jì)算困難性。

(3) DSA (Digital Signature Algorithm) 數(shù)字簽名算法,是Schnorr和EIGamal 簽名算法的變種,被美國(guó)NIST稱作標(biāo)準(zhǔn)的數(shù)字簽名標(biāo)準(zhǔn)(DSS, Digital Signature Standard),嚴(yán)格來(lái)說(shuō)不算加密算法。

3.3 RSA和DSA的區(qū)別

(1) DSA是基于整數(shù)有限域離散對(duì)數(shù)難題的,其安全性與RSA相比差不多。

(2) DSA 數(shù)字簽名和認(rèn)證中,發(fā)送者使用自己的私鑰對(duì)文件或者消息進(jìn)行簽名,接受者收到消息后,使用發(fā)送者的公鑰來(lái)驗(yàn)證簽名的真實(shí)性,接受者由此可知這條消息確實(shí)來(lái)在于擁有私鑰的發(fā)送者,公鑰的形式就是數(shù)字證書。例如,從網(wǎng)上下載安裝程序,一般都帶有程序制作者的數(shù)字簽名,可以證明改程序的確是該作者(公司)發(fā)布的而不是第三方偽造的且未被篡改過(guò)(身份認(rèn)證/驗(yàn)證)。

(3) DSA 只是一種算法,和RAS的不同之處在于它能不能用作加密和解密,也不能進(jìn)行密鑰交換,只用于簽名,它比RSA要快很多。


4. 哈希算法

4.1 哈希(Hash)和加密(Encrypt)區(qū)別

哈希是把目標(biāo)文本轉(zhuǎn)換為具有相同長(zhǎng)度、不可逆的雜湊字符串(消息摘要)。

加密是指把目標(biāo)文件轉(zhuǎn)換為長(zhǎng)度不同、可逆的密文。詳細(xì)介紹

4.2 常見的哈希算法

(1) MD5 (Message Digest Algorithm5) 消息摘要算法第五版,是RSA公司研發(fā)的一種單向散列算法,非可逆,相同的明文產(chǎn)生相同的密文。

特性:

壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的MD5值長(zhǎng)度都是固定的。128位的MD5散列被表示為32位16進(jìn)制數(shù)字;

容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易;

抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的MD5值都有很大區(qū)別;

強(qiáng)抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

(2) SHA 1(Secure Hash Algorithm) 可以對(duì)任意長(zhǎng)度的數(shù)據(jù)運(yùn)算生成一個(gè)160位的數(shù)值。主要適用于數(shù)字簽名標(biāo)準(zhǔn)里定義的DSA算法。對(duì)于長(zhǎng)度小于2^64位的消息,SHA-1 會(huì)產(chǎn)生一個(gè)160位的消息摘要。

特性:

不可以從消息摘要中復(fù)原信息;

兩個(gè)不同的消息,產(chǎn)生相同消息摘要的概率10^48 分之1 ,一般認(rèn)為不會(huì)產(chǎn)生相同的消息摘要。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 本文主要介紹移動(dòng)端的加解密算法的分類、其優(yōu)缺點(diǎn)特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法。文中會(huì)包含算法的...
    蘋果粉閱讀 11,674評(píng)論 5 29
  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開發(fā)過(guò)程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲(chǔ)、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹閱讀 3,037評(píng)論 0 6
  • 在開發(fā)應(yīng)用過(guò)程中,客戶端與服務(wù)端經(jīng)常需要進(jìn)行數(shù)據(jù)傳輸,涉及到重要隱私安全信息時(shí),開發(fā)者自然會(huì)想到對(duì)其進(jìn)行加密,即使...
    閑庭閱讀 3,427評(píng)論 0 11
  • 概述 之前一直對(duì)加密相關(guān)的算法知之甚少,只知道類似DES、RSA等加密算法能對(duì)數(shù)據(jù)傳輸進(jìn)行加密,且各種加密算法各有...
    Henryzhu閱讀 3,208評(píng)論 0 14
  • 今天是21天馬甲線計(jì)劃的第一天,鍛煉了一個(gè)半小時(shí)左右。鍛煉的時(shí)候好累啊,跑步的時(shí)候有放棄的念頭,做力量訓(xùn)練的時(shí)候也...
    lemonnade閱讀 473評(píng)論 0 0

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