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

2021-10-11 13:29:05 字數 937 閱讀 8478

在下面的**裡,我給你總結了常見的一些演算法,以及一些相關的資訊。其中,計算效能參考的是 ecrypt 效能基準測試在 2020 年 7 月對較長資料的執行結果。

從上表中可以看出每個位元組的加密、解密運算大約需要0.5個時鐘週期,對比單向雜湊函式的效能,加密解密運算是一種很快的運算。

為了能夠處理任意大小的資料並且輸出結果長度固定,單向雜湊函式需要將資料分組,然後對陣列進行運算。在對稱加密演算法裡對輸出資料沒有長度限制,對資料的處理方式也就有更多的想象空間。

如果按照資料是否分組的角度考慮,就有兩種處理方式:

那麼怎麼計算序列演算法呢?

序列演算法的基本思路,是從金鑰推導出跟明文長度相同長度的金鑰序列,然後用金鑰序列與明文異或運算得到密文,密文與金鑰序列異或運算得到明文。

序列演算法的關鍵是如何重固定長度的金鑰推導出任意長度的金鑰序列,一般來說金鑰序列的推導和異或運算都是快速運算。所以序列算被認為是更高效的演算法。

由於不需要資料分組,序列演算法的安全性主要取決於金鑰序列的推導演算法,而不用考慮資料分組帶來的種種陷阱。對於應用程式而言,這是乙個易於使用不易出錯的選擇。

分組演算法的安全性,除了演算法本身之外,還取決於資料分組的策略。應用程式需要同時指定分組演算法和分組策略。對於不太了解密碼技術的細節的程式設計師來說,這實在是乙個不小的挑戰。

良好的效能,以及皮實的用法,這是我傾向於優先使用序列演算法的兩個基本原因。同樣,按照這兩個標準,同時考慮安全強度,我建議你使用下面的對稱金鑰演算法,按照優先順序從高到低排列:

極客時間 演算法

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

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

分組演算法要對輸入資料進行分組,然後按資料分組進行運算。乙個典型的分組演算法由三部分組成 資料分組 分組運算 鏈結模式。資料分組 資料分組在加密時會將明文資料分組為加密演算法能夠處理的固定大小的資料塊。比如aes能夠處理的資料塊大小為128位,那麼資料就要被分割成乙個或多個128為的資料塊。如果不能...

mysql索引(極客時間)

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