0

好的,在你们谴责我之前:我知道这是一个可怕的代码和超弱的密码。我只是想找出以下是否有资格成为分组密码(即使是非常基本且薄弱的密码)

int main(){
   int mac = 123;
   int key = 789;

   int enc = mac^key;
   printf("encrypted text  =  %d\n",enc);

   int plain = enc^key;
   printf("decrypted text = %d\n",plain);

   return 0;
}

这是输出:

encrypted text  =  878
decrypted text = 123
4

1 回答 1

5

为了创建分组密码,必须遵循某些一般性。您显示的代码在技术上不是分组密码。通用性如:

  • 在块密码中,消息被分成块,然后对每个块进行加密(即像替换非常大的字符 - 64 位或更多)
  • 分组密码由两种配对算法组成,一种用于加密,E,另一种用于解密,E-1。两种算法都接受两个输入:一个大小为 n 位的输入块和一个大小为 k 位的密钥,产生一个 n 位输出块。对于任何一个固定密钥,解密都是加密的反函数

分组密码模式(ECB、CBC)中的加密使用特定的流程:

  • 分组密码必须做的第一件事是将明文分成大小相等的块,通常为 8 个字节,例如 ASCII 编码imablock
  • 使用密码加密明文。
  • 解密消息。

密码的选择取决于实现。

关键是,虽然您可能遵循了加密-解密流程,但您的程序并不满足分组密码的一般性。您需要将消息分成以实现对称密码

实施的是简单的加密,而不是分组密码

有很多参考:

希望能帮助到你。:)

于 2013-10-01T05:30:02.720 回答