📜  传统的对称密码(1)

📅  最后修改于: 2023-12-03 15:36:23.924000             🧑  作者: Mango

传统的对称密码

对称密码是一种加密技术,在这种技术中,加密和解密都使用相同的密码。对称密码算法通常分为分组密码和流密码两种类型。分组密码是将要加密的消息分成固定长度的块,然后对每个块进行加密。流密码则是把要加密的消息作为一个连续的二进制流来处理。

分组密码

在分组密码算法中,每个块都被分成两个部分,左半部分和右半部分。然后,该算法使用一个称为“轮”的方案来加密每个块。每个轮都使用密钥和一些算法来切换左右两个半块。一个最好的例子是DES(数据加密标准)算法。

DES算法

DES算法是一种分组密码算法,它使用一个称为密钥调度算法的过程来生成每个轮的密钥。该算法使用64位密钥,但实际上只有56位用于加密;其他8位被用于检查错误。DES算法是一个块密码算法,每个块使用64位块。每轮的过程如下:

  1. 初始置换(IP):将输入的64位块转换为新的64位块,将第1位放在第58位,第2位放在第50位,...,将第64位放在第7位。
  2. 轮函数(F函数):将32位右半部分(R0)作为输入,并将其与一个48位子密钥进行计算,然后将结果与左半部分(L0)异或。这个过程在每个轮中都会执行。
  3. 置换:将_L1_和_R1_互换,以准备下一个轮。
  4. 最终置换(IP'):与初始置换类似。
AES算法

高级加密标准(AES)是一种对称分组密码算法,它比DES更安全。该算法使用一个称为密钥扩展算法的过程来生成每个轮的密钥。它支持三个密钥长度:128位、192位和256位。每个块使用128位块。AES使用不同的轮函数来代替DES的F函数,其过程如下:

  1. 轮密钥加:将一个轮密钥与块进行异或,每个轮都有自己的轮密钥。
  2. 字节代替:用S盒中的值替换块中的每个字节(S盒是一组预处理的查找表,用于AES里的子字节替代)。
  3. 行移位:向左侧移动矩阵的每一行,这样可以改变每个字节的位置。
  4. 列混淆:使用特定的矩阵运算来混淆每个列,这样可以增加加密强度。
  5. 轮密钥加:与轮密钥相同。
流密码

在流密码算法中,对要加密的消息的每个比特都使用相应的密钥流进行加密。密钥流是一个逐步生成的比特序列。一个例子是RC4算法。

RC4算法

RC4算法是一种流密码算法,它使用一个变量(称为状态向量)和一个密钥作为输入来生成加密密钥流。该密钥流逐步使用异或运算与要加密的消息中的比特进行加密。该算法没有明确的如何处理消息的块或长度,而是根据已产生的密钥流对消息中的每个比特进行加密。

结束语

总的来说,对称密码是一种广泛使用的加密技术。无论是分组密码还是流密码都有自己的优点和局限性。当使用对称密码加密数据时,必须安全地处理密钥,以免密钥被窃取。