密碼學系列 加密模式和填充模式

2022-03-02 03:39:16 字數 1097 閱讀 4321

介紹加密模式和填充模式。

介紹兩種加密的模式:

ecbecb : electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,並對每個塊進行獨立加密

優點 : 可以並行處理資料

缺點 : 同樣的原文生成同樣的密文, 不能很好的保護資料

同時加密,原文是一樣的,加密出來的密文也是一樣的

cbccbc : cipher-block chaining, 密碼塊鏈結. 每個明文塊先與前乙個密文塊進行異或後,再進行加密。在這種方法中,每個密文塊都依賴於它前面的所有明文塊

優點 : 同樣的原文生成的密文不一樣

缺點 : 序列處理資料.

填充模式:

兩種填充模式,一種是nopadding,另一種是pkcs5padding

nopadding

不填充.

在des加密演算法下, 要求原文長度必須是8byte的整數倍

在aes加密演算法下, 要求原文長度必須是16byte的整數倍

pkcs5padding

資料塊的大小為8位, 不夠就補足

tips

預設情況下, 加密模式和填充模式為 : ecb/pkcs5padding

如果使用cbc模式, 在初始化cipher物件時, 需要增加引數, 初始化向量iv : ivparameterspec iv = new ivparameterspec(key.getbytes());

這裡介紹一下cbc 同樣的原文生成的密文不一樣這個就有點裝了,其實是這樣子的cbc 需要與前乙個密文塊進行異或後,但是明文開始沒有前乙個密文,所以呢,我們要有乙個iv。

也就是說同樣的key和原文,iv不同生成的密文不一樣。真正的原位生成的密文不一樣,是在訊息摘要中。

好了,那麼現在知道了注意的是加密的模式,選擇的是什麼,比如說ecb只需要key,cbc還需要iv,同時填充模式如果是nopadding 模式,那麼需要自己去填充,這個其實可以自己去設計演算法,這樣就不會那麼容易被破解。

說乙個個人的例子,公司伺服器補位的時候用的就是自己設計的東西補位的,當時伺服器告訴我是aes模式,我傳送到伺服器端,伺服器端解不出來,異常了,後來才知道要按照固定格式補位,伺服器會檢查是否是自己的方式補位的方式。

密碼學系列 異或加密

繼續更新本系列,介紹常用的異或加密。異或加密的原理非常簡單。原理 0 0 0 1 1 0 1 0 1 0 1 1就是1和1那麼得到的結果是0,0和0得到的結果是0,只有1和0或者0和1得到的結果才是1,所以叫做異或。很多時候我們不希望我們請求的時候進行明文顯示,而又不能像密碼一樣完全是不可逆加密,有...

《密碼學系列》 分組密碼

繼上一期的流密碼之後,我們就趁熱打鐵趕緊來看看分組密碼是怎麼一回事呢?在常用的一些密碼系統中,分組密碼在維護系統安全中仍然扮演著乙個重要角色,同流密碼一樣,分組密碼的使用也有許許多多需要我們注意的問題。分組密碼是什麼呢?分組分組顧名思義就是將明文訊息分成組來進行加密,也就是說,加密器每次只能處理特定...

密碼學系列 國密演算法

國密即國家密碼局認定的國產密碼演算法。主要有sm1,sm2,sm3,sm4,sm9。金鑰長度和分組長度均為128位。sm2 為非對稱加密,基於橢圓曲線密碼 ecc 的公鑰密碼演算法標準,提供數字簽名,金鑰交換,公鑰加密,用於替換rsa ecdsa ecdh等國際演算法 sm3 訊息摘要演算法,雜湊結...