算法|一文读懂加密算法的类型+每种算法都有优缺点

算法|一文读懂加密算法的类型+每种算法都有优缺点

文章图片

算法|一文读懂加密算法的类型+每种算法都有优缺点

文章图片


加密算法的类型 + 每种算法都有优缺点
不同类型的加密算法旨在以一种只能使用正确密钥提取原始数据的方式来混淆数据 。 但是 , 有多种不同的方法可以实现这一点 。
加密算法的两大类是对称加密和非对称加密 。 这些加密方法中的每一种都有其优点和缺点 。
对称加密对称加密算法使用相同的密钥进行加密和解密 。 这意味着加密消息的发送者和接收者需要在开始发送加密数据之前通过安全通道共享密钥的副本 。 对称加密算法有两种不同的类型:块密码和流密码 。
分组密码分组密码以固定大小的块加密数据 。 例如 , 高级加密标准 (AES) 使用 128 位块长度 。
如果明文比块长度短 , 则在加密之前将其填充到所需的长度 。 在另一端 , 消息的接收者将对其进行解密 , 然后删除填充以恢复原始消息 。
如果明文长于块长度 , 则将其分成多个不同块进行加密 。 一种分组密码操作模式定义了这些块如何相互关联 。
每种操作模式都有其优点和缺点 。 例如 , 电子密码本 (ECB) 模式是最简单的操作模式 。 使用 ECB , 每个块都是完全独立加密的 。

企鹅
这样做的缺点是具有相同明文块产生相同的密文 。 上图是 Linux 企鹅的图片 。 虽然此数据已加密 , 但特定颜色(黑色、白色等)像素的密文在整个图像中是相同的 , 因此企鹅仍然可见 。
其他操作模式通过将每个块的加密相互关联来消除这个问题 。 有些还提供附加功能 , 例如伽罗瓦计数器模式 (GCM) , 它会生成消息验证码 (MAC) , 以验证数据在传输过程中没有被修改 。
示例:高级加密标准 (AES)最著名的分组密码是高级加密标准 (AES) 。 该加密算法被选为美国国家标准与技术研究院 (NIST) 举办的竞赛的结果 , 以取代老化的数据加密标准 (DES) 。
AES 是一组三种不同的算法 , 旨在使用 128、192 或 256 位加密密钥 。 这些算法分为密钥调度和加密算法 。
三个版本的 AES 加密算法基本相同 。 它分为轮次 , 轮次由一组数学运算组成 。 不同 AES 版本之间的主要区别在于使用的轮数:10、12 和 14 。
每一轮 AES 使用从原始密钥派生的唯一轮密钥 。 派生这些轮密钥是密钥调度的工作每个 AES 版本的密钥调度是不同的 , 因为它们采用不同长度的密钥并产生不同数量的 128 位轮密钥 。
流密码另一种对称加密算法是流密码 。 与分组密码不同 , 流密码每次加密一个明文 。

流密码
流密码是基于唯一完全牢不可破的加密算法设计的:一次性密码 (OTP) 。 OTP 采用与明文相同长度的随机密钥和异或 (XOR) 明文的每一位和密钥一起生成密文 , 如上图所示 。
使用 OTP 解密与加密相同 。 这是因为任何与自身异或的东西都是零 , 而任何与零异或的东西都是它自己 。 使用明文 P、密文 C 和密钥 K
C XOR K = (C XOR K) XOR K = C XOR (K XOR K) = C XOR 0 = C
尽管 OTP 具有很高的安全性 , 但它很少使用 , 因为安全地共享其工作所需的大量关键材料是不切实际的 。 流密码使用与 OTP 相同的想法 , 但密钥的安全性稍差 。