日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

对称加密算法之分组加密的六种工作模式(ECB、CBC、PCBC、CFB、OFB、CTR)

發(fā)布時(shí)間:2024/9/30 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对称加密算法之分组加密的六种工作模式(ECB、CBC、PCBC、CFB、OFB、CTR) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

加密一般分為對(duì)稱(chēng)加密(Symmetric Key Encryption)和非對(duì)稱(chēng)加密(Asymmetric Key Encryption)。對(duì)稱(chēng)加密又分為分組加密和序列密碼。

(1)分組加密,也叫塊加密(block cyphers),一次加密明文中的一個(gè)塊。是將明文按一定的位長(zhǎng)分組,明文組經(jīng)過(guò)加密運(yùn)算得到密文組,密文組經(jīng)過(guò)解密運(yùn)算(加密運(yùn)算的逆運(yùn)算),還原成明文組。具有代表性的塊加密算法有DES,AES,3DES等。

(2)序列加密,也叫流加密(stream cyphers),一次加密明文中的一個(gè)位。是指利用少量的密鑰(制亂元素)通過(guò)某種復(fù)雜的運(yùn)算(密碼算法)產(chǎn)生大量的偽隨機(jī)位流,用于對(duì)明文位流的加密。

解密是指用同樣的密鑰和密碼算法及與加密相同的偽隨機(jī)位流,用以還原明文位流。

?

分組加密算法中,有ECB、CBC、PCBC、CFB、OFB、CTR這幾種算法模式:

1、ECB(Electronic Code Book):

又稱(chēng)電子密碼本模式:Electronic codebook,是最簡(jiǎn)單的塊密碼加密模式,加密前根據(jù)加密塊大小(如AES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨(dú)加密,解密同理。

DES對(duì)稱(chēng)加密算法的?ECB模式 其實(shí)非常簡(jiǎn)單,就是將數(shù)據(jù)按照8個(gè)字節(jié)一段進(jìn)行DES加密或解密得到一段8個(gè)字節(jié)的密文或者明文,最后一段不足8個(gè)字節(jié),按照需求補(bǔ)足8個(gè)字節(jié)進(jìn)行計(jì)算,之后按照順序?qū)⒂?jì)算所得的數(shù)據(jù)連在一起即可,各段數(shù)據(jù)之間互不影響。

特點(diǎn):

(1)簡(jiǎn)單,有利于并行計(jì)算,誤差不會(huì)被傳送;

(2)同樣的明文塊會(huì)被加密成相同的密文塊,不能很好的隱藏明文數(shù)據(jù)模式;

(3)加密消息塊相互獨(dú)立成為被攻擊的弱點(diǎn),不能提供嚴(yán)格的數(shù)據(jù)保密性,可以對(duì)明文進(jìn)行主動(dòng)攻擊;

2、CBC模式:

密碼分組鏈接(CBC,Cipher-block chaining)模式,每個(gè)明文塊先與前一個(gè)密文塊進(jìn)行異或后,再進(jìn)行加密。在這種方法中,每個(gè)密文塊都依賴(lài)于它前面的所有明文塊。同時(shí),為了保證每條消息的唯一性,在第一個(gè)塊中需要使用初始化向量IV。它的實(shí)現(xiàn)機(jī)制使加密的各段數(shù)據(jù)之間有了聯(lián)系。

(1)DES算法的CBC模式加密步驟如下:

①首先將數(shù)據(jù)按照8個(gè)字節(jié)一組進(jìn)行分組得到D1D2......Dn(若數(shù)據(jù)不是8的整數(shù)倍,用指定的PADDING數(shù)據(jù)補(bǔ)位)

②第一組數(shù)據(jù)D1與初始化向量IV異或后的結(jié)果進(jìn)行DES加密得到第一組密文C1(初始化向量I為全零)

③第二組數(shù)據(jù)D2與第一組的加密結(jié)果C1異或以后的結(jié)果進(jìn)行DES加密,得到第二組密文C2

④之后的數(shù)據(jù)以此類(lèi)推,得到Cn

⑤按順序連為C1C2C3......Cn即為加密結(jié)果。

(2)DES算法的CBC模式加密步驟如下:

①首先將數(shù)據(jù)按照8個(gè)字節(jié)一組進(jìn)行分組得到C1C2C3......Cn;

②將第一組數(shù)據(jù)進(jìn)行解密后與初始化向量IV進(jìn)行異或得到第一組明文D1(注意:一定是先解密再異或);

③將第二組數(shù)據(jù)C2進(jìn)行解密后與第一組密文數(shù)據(jù)進(jìn)行異或得到第二組數(shù)據(jù)D2

④之后依此類(lèi)推,得到Dn

⑤按順序連為D1D2D3......Dn即為解密結(jié)果。

這里注意一點(diǎn),解密的結(jié)果并不一定是我們?cè)瓉?lái)的加密數(shù)據(jù),可能還含有你補(bǔ)得位,一定要把補(bǔ)位去掉才是你的原來(lái)的數(shù)據(jù)。

(3)特點(diǎn):

①不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長(zhǎng)度長(zhǎng)的報(bào)文,是SSL、IPSec的標(biāo)準(zhǔn);

②每個(gè)密文塊依賴(lài)于所有的信息塊,明文消息中一個(gè)改變會(huì)影響所有密文塊;

③發(fā)送方和接收方都需要知道初始化向量;

④主要缺點(diǎn)是加密過(guò)程是串行的,無(wú)法被并行化,因?yàn)樵诩用軙r(shí),明文中的微小改變會(huì)導(dǎo)致其后的全部密文塊發(fā)生改變,而且消息必須被填充到塊大小的整數(shù)倍。而在解密時(shí),從兩個(gè)鄰接的密文塊中即可得到一個(gè)明文塊。因此,解密過(guò)程可以被并行化,而解密時(shí),密文中一位的改變只會(huì)導(dǎo)致其對(duì)應(yīng)的明文塊完全改變和下一個(gè)明文塊中對(duì)應(yīng)位發(fā)生改變,不會(huì)影響到其它明文的內(nèi)容。

3、PCBC模式:

填充密碼塊鏈接(PCBC,Propagating cipher-block chaining)或稱(chēng)為明文密碼塊鏈接(Plaintext cipher-block chaining),是一種可以使密文中的微小更改在解密時(shí)導(dǎo)致明文大部分錯(cuò)誤的模式,并在加密的時(shí)候也具有同樣的特性。

對(duì)于使用PCBC加密的消息,互換兩個(gè)鄰接的密文塊不會(huì)對(duì)后續(xù)塊的解密造成影響。

4、CFB模式:

密文反饋(CFB,Cipher feedback)模式與ECB和CBC模式只能夠加密塊數(shù)據(jù)不同,可以將塊密碼變?yōu)樽酝降牧髅艽a;CFB的解密過(guò)程幾乎就是顛倒的CBC的加密過(guò)程。

①CFB需要使用一個(gè)與塊的大小相同的移位寄存器,并用IV將寄存器初始化。然后,將寄存器內(nèi)容使用塊密碼加密,然后將結(jié)果的最高x位與明文的x進(jìn)行異或,以產(chǎn)生密文的x位。下一步將生成的x位密文移入寄存器中,并對(duì)下面的x位明文重復(fù)這一過(guò)程。

②解密過(guò)程與加密過(guò)程相似,以IV開(kāi)始,對(duì)寄存器加密,將結(jié)果的高x與密文異或,產(chǎn)生x位明文,再將密文的下面x位移入寄存器。與CBC相似,明文的改變會(huì)影響接下來(lái)所有的密文,因此加密過(guò)程不能并行化;而同樣的,與CBC類(lèi)似,解密過(guò)程是可以并行化的。

由于加密流程和解密流程中被塊加密器加密的數(shù)據(jù)是前一段密文,因此即使明文數(shù)據(jù)的長(zhǎng)度不是加密塊大小的整數(shù)倍也是不需要填充的,這保證了數(shù)據(jù)長(zhǎng)度在加密前后是相同的。

5、OFB模式:

OFB模式(輸出反饋:Output feedback),OFB是先用塊加密器生成密鑰流(Keystream),然后再將密鑰流與明文流異或得到密文流;解密是先用塊加密器生成密鑰流,再將密鑰流與密文流異或得到明文,由于異或操作的對(duì)稱(chēng)性所以加密和解密的流程是完全一樣的。

與其它流密碼一樣,密文中一個(gè)位的翻轉(zhuǎn)會(huì)使平文中同樣位置的位也產(chǎn)生翻轉(zhuǎn)。這種特性使得許多錯(cuò)誤校正碼,例如奇偶校驗(yàn)位,即使在加密前計(jì)算而在加密后進(jìn)行校驗(yàn)也可以得出正確結(jié)果。

OFB與CFB一樣都非常適合對(duì)流數(shù)據(jù)的加密,OFB由于加密和解密都依賴(lài)與前一段數(shù)據(jù),所以加密和解密都不能并行。然而,由于明文和密文只在最終的異或過(guò)程中使用,因此可以事先對(duì)IV進(jìn)行加密,最后并行的將明文或密文進(jìn)行并行的異或處理。

可以利用輸入全0的CBC模式產(chǎn)生OFB模式的密鑰流。這種方法十分實(shí)用,因?yàn)榭梢岳每焖俚腃BC硬件實(shí)現(xiàn)來(lái)加速OFB模式的加密過(guò)程。

6、CTR模式:

CTR模式(Counter mode,CM)也被稱(chēng)為ICM模式(Integer Counter Mode,整數(shù)計(jì)數(shù)模式)和SIC模式(Segmented Integer Counter),與OFB相似,CTR將塊密碼變?yōu)榱髅艽a。它通過(guò)遞增一個(gè)加密計(jì)數(shù)器以產(chǎn)生連續(xù)的密鑰流,其中,計(jì)數(shù)器可以是任意保證長(zhǎng)時(shí)間不產(chǎn)生重復(fù)輸出的函數(shù),但使用一個(gè)普通的計(jì)數(shù)器是最簡(jiǎn)單和最常見(jiàn)的做法。

CTR模式的特征類(lèi)似于OFB,但它允許在解密時(shí)進(jìn)行隨機(jī)存取。由于加密和解密過(guò)程均可以進(jìn)行并行處理,CTR適合運(yùn)用于多處理器的硬件上。

注意圖中的“nonce”與其它圖中的IV(初始化向量)相同。IV、隨機(jī)數(shù)和計(jì)數(shù)器均可以通過(guò)連接,相加或異或使得相同明文產(chǎn)生不同的密文。

?

?

參考博客:

https://blog.csdn.net/includeiostream123/article/details/51066799

https://blog.csdn.net/jerry81333/article/details/78336616
?

總結(jié)

以上是生活随笔為你收集整理的对称加密算法之分组加密的六种工作模式(ECB、CBC、PCBC、CFB、OFB、CTR)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。