極客時間 實用密碼學 08該怎麼選擇初始化向量

2021-10-11 17:38:27 字數 767 閱讀 2563

分組演算法要對輸入資料進行分組,然後按資料分組進行運算。乙個典型的分組演算法由三部分組成:資料分組、分組運算、鏈結模式。

資料分組:

資料分組在加密時會將明文資料分組為加密演算法能夠處理的固定大小的資料塊。比如aes能夠處理的資料塊大小為128位,那麼資料就要被分割成乙個或多個128為的資料塊。

如果不能整分,就要把最後乙個分組補齊為128位。這些分組資料的運算結果,組合起來就是密文資料。

解密時進行相反的操作將補齊資料去掉,再把資料分組組合成完整的明文資料。

理解了資料分組再來看一下分組運算和鏈結模式。

那你有沒有想過,我們為什麼要把上乙個分組運算和下乙個分組運算聯絡起來呢?其實,我們在前面討論過單向雜湊函式的鏈結模式,我們說它是為了確保雪崩效應能夠延續。

在分組運算裡,鏈結模式也承擔類似的功能:

前面,我們討論了,在乙個對稱金鑰的生命週期裡,初始化向量不能重複。也就是說,對於乙個演算法來說,初始化向量的長度是固定的。長度固定,也就意味著初始化向量的個數是有限制的。

比如,乙個 128 位的初始化向量,最多有 2^ 128 個不重複的數值。進一步的說,對於這個演算法,乙個金鑰最多只能使用 2^ 128 次。的確看起來,2^128 是乙個巨大的數字,一般的應用程式也沒有什麼機會使用這麼多次加密運算。

極客時間 實用密碼學 07怎樣選擇對稱金鑰演算法

在下面的 裡,我給你總結了常見的一些演算法,以及一些相關的資訊。其中,計算效能參考的是 ecrypt 效能基準測試在 2020 年 7 月對較長資料的執行結果。從上表中可以看出每個位元組的加密 解密運算大約需要0.5個時鐘週期,對比單向雜湊函式的效能,加密解密運算是一種很快的運算。為了能夠處理任意大...

極客時間 演算法

1.合格程式設計師的第一步 演算法和資料結構 2.如何事半功倍的學習演算法和資料結構 1 怎樣去學習精通乙個領域?a.chunk it up 切碎知識點 同事注意各個知識點的聯絡,輔助記憶 b.deliberate practicing 刻意練習 c.feedback 和別人的做飯比較,高手指點 2...

mysql索引(極客時間)

innodb中使用了b 樹資料結構,每乙個索引在innodb都對應一顆b 樹。b 樹的特點是能夠保持資料穩定有序,其插入與修改擁有較穩定的對數時間複雜度。b 樹元素自底向上插入,這與二叉樹恰好相反。具體的定以與性質可以在其他文章檢視到。現在有一張表 mysql create table t id i...