分組密碼和流密碼的區別
分組密碼和流密碼都屬於對稱金鑰密碼家族,它們基本上是用於將明文直接轉換為密文的加密方法。
閱讀本文,瞭解分組密碼和流密碼的功能以及它們彼此之間的區別。
什麼是分組密碼?
分組密碼是一種對稱加密技術,它使用共享的秘密金鑰來加密固定大小的資料塊。在加密過程中,使用明文,密文是加密後的文字。明文和密文都使用相同的金鑰進行加密。
分組密碼處理固定大小的資料塊。通常,訊息的大小大於塊大小。因此,長訊息被分成一系列連續的訊息塊,密碼一次對這些塊進行操作。
分組密碼使用共享的秘密金鑰,一次加密和解密一個塊,而不是一次一個位元。不需要填充,因為塊的大小是固定的。這是一個對稱演算法。它使用共享金鑰在加密過程中將文字輸入轉換為密文(加密文字)。它使用相同的金鑰在解密過程中將密文轉換回原始明文。輸出長度與輸入長度相同。
資料加密標準 (DES)、TripleDES 和高階加密標準 (AES) 是分組密碼演算法的知名版本。
流密碼是分組密碼的對應物,它使用共享金鑰並一次對輸入的一個位元進行操作。
公開金鑰密碼術或非對稱密碼術是分組密碼演算法的替代方案。該演算法使用公鑰加密明文,使用私鑰解密密文。
分組密碼有不同的操作模式:
電子密碼本 (ECB) 模式
密碼分組連結 (CBC) 模式
密文反饋 (CFB) 模式
輸出反饋 (OFB) 模式
計數器 (CTR) 模式
這些模式是通用分組密碼的程式規則。有趣的是,不同的模式會產生不同的特性,從而增強底層分組密碼的安全性。
什麼是流密碼?
流密碼是一種加密方法,它將偽隨機密碼數字流與明文數字組合。此偽隨機加密數字流一次應用於每個二進位制數字。這種加密方法為每個金鑰使用無限量的偽隨機密碼數字。
流密碼使用基於金鑰的演算法一次加密任意數量的明文。
為了確保這種型別的加密安全,偽隨機密碼數字應該是不可預測的,並且金鑰不應該重複使用。
偽隨機密碼數字是使用數字移位暫存器和多個隨機種子值建立的。
流密碼也稱為狀態密碼。“狀態密碼”這個名稱源於每個數字的加密都取決於密碼的當前狀態。
RC4 流密碼廣泛用於軟體中。
使用設計良好的偽隨機數生成器,流密碼可以與金鑰長度相同的分組密碼一樣安全。流密碼的主要優點是它使用的程式碼更少,並且比分組密碼更快。
分組密碼和流密碼的區別
下表突出顯示了分組密碼和流密碼的主要區別:
| 金鑰 | 分組密碼 | 流密碼 |
|---|---|---|
| 定義 | 分組密碼是一種加密型別,其中明文的轉換是透過一次取其塊來執行的。 | 流密碼是一種加密型別,其中明文的轉換是透過一次取明文的一個位元組來執行的。 |
| 位元轉換 | 由於分組密碼一次轉換塊,因此它轉換的位元數比流密碼多,流密碼可以轉換 64 位或更多位。 | 然而,在流密碼的情況下,一次只能轉換 8 位。 |
| 原理 | 分組密碼使用“混淆”和“擴散”原理進行加密所需的轉換。 | 流密碼僅使用混淆原理進行轉換。 |
| 演算法 | 對於明文加密,分組密碼使用電子密碼本 (ECB) 和密碼分組連結 (CBC) 演算法。 | 流密碼使用 CFB(密文反饋)和 OFB(輸出反饋)演算法。 |
| 解密 | 由於在分組密碼的情況下,更多位組合在一起進行加密,因此與流密碼相比,反向加密或解密相對複雜。 | 流密碼使用異或 (XOR) 進行加密,可以很容易地將其反轉為明文。 |
| 實現 | Feistel 密碼是最常見的分組密碼實現。 | 流密碼的主要實現是 Vernam 密碼。 |
結論
分組密碼適用於管理資料塊的應用程式,包括檔案傳輸、電子郵件和資料庫。另一方面,流密碼更適用於需要加密/解密資料流的應用程式,包括透過資料通訊通道或瀏覽器/Web 連結。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP