IDEA 加密算法是如何工作的?
IDEA 是一种分组密码,它对 64 位明文和 128 位密钥进行操作。IDEA 像 DES 一样是可逆的,也就是说,相同的算法可以用于加密和解密。IDEA 需要扩散和混淆来进行加密。
64 位明文被分成四个 16 位明文部分 (P1 到 P4)。这些是第一轮的输入。共有八轮这样的过程。密钥包括 128 位。在每一轮中,都会从原始密钥生成六个子密钥,每个子密钥包含 16 位。
第一轮可以使用密钥 K1 到 K6,第二轮可以使用密钥 K7 到 K12,以此类推,直到最后一轮。最后一步包括输出转换,这需要四个子密钥 (K49 到 K52)。
最终输出是由输出转换步骤创建的输出。块 C1 到 C4 连接起来形成最终输出。
轮数 - IDEA 有八轮。每一轮都包含对四个数据块进行的一系列操作,利用六个密钥。每一轮接下来的步骤中的“加法 *”和“乘法 *”不是简单的加法和乘法,而是模 216 加法,即 65536,和模 216 + 1 乘法,即 65537。
一轮的子密钥生成 -
在第一轮中,使用密钥的第 1-96 位。第 97-128 位保持未使用。它们被赋予第二轮。
在第二轮中,首先使用第 97-128 位,因此出现 25 位的循环左移,并使用新的第 26-89 位。第 90-128 位和第 1-25 位保持未使用。
在第三轮中,再次首先使用未使用的第 90-128 位和第 1-25 位,出现 25 位的循环左移,并使用第 51-82 位。第 83-128 位和第 1-50 位保持未使用。
在第四轮中,使用第 83-128 位和第 1-50 位。
在第五轮中,出现 25 位的循环左移,并使用第 76-128 位和第 1-43 位。第 44-75 位保持未使用。
在第六轮中,使用第五轮未使用的位,并进行 25 位的循环左移,因此使第 37-100 位未使用。
在第七轮中,首先使用第六轮未使用的位,即第 37-100 位,并进行 25 位的循环左移,使用第 126-128 位和第 1-29 位。第 30-125 位保持未使用。
使用第七轮未使用的第 30-125 位,密钥被禁用。
输出转换 - 这是一次性操作。它发生在第 8 轮结束时。因此,64 位值被分成四个子块(例如 R1 到 R4),这里使用四个子密钥。
IDEA 解密 - 解密过程与加密过程相同。子密钥的生成和设计有一些改变。解密子密钥与加密子密钥相反。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP