分组密码和流密码的区别
分组密码和流密码都属于对称密钥密码家族,它们基本上是用于将明文直接转换为密文的加密方法。
阅读本文,了解分组密码和流密码的功能以及它们彼此之间的区别。
什么是分组密码?
分组密码是一种对称加密技术,它使用共享的秘密密钥来加密固定大小的数据块。在加密过程中,使用明文,密文是加密后的文本。明文和密文都使用相同的密钥进行加密。
分组密码处理固定大小的数据块。通常,消息的大小大于块大小。因此,长消息被分成一系列连续的消息块,密码一次对这些块进行操作。
分组密码使用共享的秘密密钥,一次加密和解密一个块,而不是一次一个比特。不需要填充,因为块的大小是固定的。这是一个对称算法。它使用共享密钥在加密过程中将文本输入转换为密文(加密文本)。它使用相同的密钥在解密过程中将密文转换回原始明文。输出长度与输入长度相同。
数据加密标准 (DES)、TripleDES 和高级加密标准 (AES) 是分组密码算法的知名版本。
流密码是分组密码的对应物,它使用共享密钥并一次对输入的一个比特进行操作。
公开密钥密码术或非对称密码术是分组密码算法的替代方案。该算法使用公钥加密明文,使用私钥解密密文。
分组密码有不同的操作模式:
电子密码本 (ECB) 模式
密码分组链接 (CBC) 模式
密文反馈 (CFB) 模式
输出反馈 (OFB) 模式
计数器 (CTR) 模式
这些模式是通用分组密码的程序规则。有趣的是,不同的模式会产生不同的特性,从而增强底层分组密码的安全性。
什么是流密码?
流密码是一种加密方法,它将伪随机密码数字流与明文数字组合。此伪随机加密数字流一次应用于每个二进制数字。这种加密方法为每个密钥使用无限量的伪随机密码数字。
流密码使用基于密钥的算法一次加密任意数量的明文。
为了确保这种类型的加密安全,伪随机密码数字应该是不可预测的,并且密钥不应该重复使用。
伪随机密码数字是使用数字移位寄存器和多个随机种子值创建的。
流密码也称为状态密码。“状态密码”这个名称源于每个数字的加密都取决于密码的当前状态。
RC4 流密码广泛用于软件中。
使用设计良好的伪随机数生成器,流密码可以与密钥长度相同的分组密码一样安全。流密码的主要优点是它使用的代码更少,并且比分组密码更快。
分组密码和流密码的区别
下表突出显示了分组密码和流密码的主要区别:
密钥 | 分组密码 | 流密码 |
---|---|---|
定义 | 分组密码是一种加密类型,其中明文的转换是通过一次取其块来执行的。 | 流密码是一种加密类型,其中明文的转换是通过一次取明文的一个字节来执行的。 |
比特转换 | 由于分组密码一次转换块,因此它转换的比特数比流密码多,流密码可以转换 64 位或更多位。 | 然而,在流密码的情况下,一次只能转换 8 位。 |
原理 | 分组密码使用“混淆”和“扩散”原理进行加密所需的转换。 | 流密码仅使用混淆原理进行转换。 |
算法 | 对于明文加密,分组密码使用电子密码本 (ECB) 和密码分组链接 (CBC) 算法。 | 流密码使用 CFB(密文反馈)和 OFB(输出反馈)算法。 |
解密 | 由于在分组密码的情况下,更多位组合在一起进行加密,因此与流密码相比,反向加密或解密相对复杂。 | 流密码使用异或 (XOR) 进行加密,可以很容易地将其反转为明文。 |
实现 | Feistel 密码是最常见的分组密码实现。 | 流密码的主要实现是 Vernam 密码。 |
结论
分组密码适用于管理数据块的应用程序,包括文件传输、电子邮件和数据库。另一方面,流密码更适用于需要加密/解密数据流的应用程序,包括通过数据通信通道或浏览器/Web 链接。