這篇文章主要介紹了Java對稱加密工作模式原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
創(chuàng)新互聯(lián)為您提適合企業(yè)的網(wǎng)站設(shè)計?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進行網(wǎng)站設(shè)計及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計, 我們的網(wǎng)頁設(shè)計師為您提供的解決方案。
對稱加密又分為分組加密和序列密碼。
分組密碼,也叫塊加密(block cyphers),一次加密明文中的一個塊。是將明文按一定的位長分組,明文組經(jīng)過加密運算得到密文組,密文組經(jīng)過解密運算(加密運算的逆運算),還原成明文組。
序列密碼,也叫流加密(stream cyphers),一次加密明文中的一個位。是指利用少量的密鑰(制亂元素)通過某種復(fù)雜的運算(密碼算法)產(chǎn)生大量的偽隨機位流,用于對明文位流的加密。
解密是指用同樣的密鑰和密碼算法及與加密相同的偽隨機位流,用以還原明文位流。
分組加密算法中,有ECB,CBC,CFB,OFB這幾種算法模式。
1)ECB(Electronic Code Book)/電碼本模式
ECB(電子密本方式)其實非常簡單,就是將數(shù)據(jù)按照8/16節(jié)一段進行加密或解密得到一段8/16個字節(jié)的密文或者明文,最后一段不足8/16個字節(jié),按照需求補足8/16個字節(jié)進行計算,之后按照順序?qū)⒂嬎闼玫臄?shù)據(jù)連在一起即可,各段數(shù)據(jù)之間互不影響。
優(yōu)點:
1.簡單,有利于并行計算,誤差不會被傳送
缺點:
1.不能隱藏明文的模式
2.可能對明文進行主動攻擊
2)CBC(Cipher Block Chaining)/密文分組鏈接方式
CBC(密文分組鏈接方式)的實現(xiàn)機制使加密的各段數(shù)據(jù)之間有了聯(lián)系。其實現(xiàn)的機理如下:
加密步驟如下:
1)首先將數(shù)據(jù)按照8/16個字節(jié)一組進行分組得到D1D2......Dn(若數(shù)據(jù)不是8的整數(shù)倍,用指定的PADDING數(shù)據(jù)補位)
2)第一組數(shù)據(jù)D1與初始化向量I異或后的結(jié)果進行加密得到第一組密文C1
3)第二組數(shù)據(jù)D2與第一組的加密結(jié)果C1異或以后的結(jié)果進行加密,得到第二組密文C2
4)之后的數(shù)據(jù)以此類推,得到Cn
5)按順序連為C1C2C3......Cn即為加密結(jié)果。
解密是加密的逆過程,步驟如下:
1)首先將數(shù)據(jù)按照8/16個字節(jié)一組進行分組得到C1C2C3......Cn
2)將第一組數(shù)據(jù)進行解密后與初始化向量I進行異或得到第一組明文D1(注意:一定是先解密再異或)
3)將第二組數(shù)據(jù)C2進行解密后與第一組密文數(shù)據(jù)進行異或得到第二組數(shù)據(jù)D2
4)之后依此類推,得到Dn
5)按順序連為D1D2D3......Dn即為解密結(jié)果。
這里注意一點,解密的結(jié)果并不一定是我們原來的加密數(shù)據(jù),可能還含有你補得位,一定要把補位去掉才是你的原來的數(shù)據(jù)。
優(yōu)點:
1. 不容易主動攻擊,安全性好于ECB,適合傳輸長度長的報文,是SSL、IPSec的標(biāo)準(zhǔn)
缺點:
1. 發(fā)送方和接收方都需要知道初始化向量 IV
2.加密過程是串行的,無法被并行化(在解密時,從兩個鄰接的密文塊中即可得到一個平文塊。因此,解密過程可以被并行化)
3.誤差傳遞
3)Cipher Feedback (CFB)/密文反饋模式
密文反饋(CFB,Cipher feedback)模式類似于CBC,可以將塊密碼變?yōu)樽酝降牧髅艽a;工作過程亦非常相似,CFB的解密過程幾乎就是顛倒的CBC的加密過程:
需要使用一個與塊的大小相同的移位寄存器,并用IV將寄存器初始化。然后,將寄存器內(nèi)容使用塊密碼加密,然后將結(jié)果的最高x位與平文的x進行異或,以產(chǎn)生密文的x位。下一步將生成的x位密文移入寄存器中,并對下面的x位平文重復(fù)這一過程。解密過程與加密過程相似,以IV開始,對寄存器加密,將結(jié)果的高x與密文異或,產(chǎn)生x位平文,再將密文的下面x位移入寄存器。
與CBC相似,平文的改變會影響接下來所有的密文,因此加密過程不能并行化;而同樣的,與CBC類似,解密過程是可以并行化的。
優(yōu)點:
1.隱藏了明文模式
2.分組密碼轉(zhuǎn)化為流模式
3.可以及時加密傳送小于分組的數(shù)據(jù)
缺點:
1.不利于并行計算
2.誤差傳送:一個明文單元損壞影響多個單元
3.唯一的IV
4)Output Feedback (OFB)/輸出反饋模式
輸出反饋模式(Output feedback, OFB)可以將塊密碼變成同步的流密碼。它產(chǎn)生密鑰流的塊,然后將其與平文塊進行異或,得到密文。與其它流密碼一樣,密文中一個位的翻轉(zhuǎn)會使平文中同樣位置的位也產(chǎn)生翻轉(zhuǎn)。這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算而在加密后進行校驗也可以得出正確結(jié)果。
每個使用OFB的輸出塊與其前面所有的輸出塊相關(guān),因此不能并行化處理。然而,由于平文和密文只在最終的異或過程中使用,因此可以事先對IV進行加密,最后并行的將平文或密文進行并行的異或處理。
可以利用輸入全0的CBC模式產(chǎn)生OFB模式的密鑰流。這種方法十分實用,因為可以利用快速的CBC硬件實現(xiàn)來加速OFB模式的加密過程。
優(yōu)點:
1.隱藏了明文模式
2.分組密碼轉(zhuǎn)化為流模式
3.可以及時加密傳送小于分組的數(shù)據(jù)
缺點:
1.不利于并行計算
2.對明文的主動攻擊是可能的
3.誤差傳送:一個明文單元損壞影響多個單元
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。