此代码是否有资格成为分组密码

时间:2013-10-01 05:02:32

标签: c encryption cryptography block-cipher

好的,在你们训斥我之前:我知道这是一个可怕的代码和超级微弱的密码。我只是试图找出以下是否有资格成为分组密码(即使是非常简陋和弱的密码)

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

密码的选择取决于实现。

关键是,虽然您可能已经遵循加密 - 解密流程,但您的程序不符合分组密码的一般性。您需要将邮件分解为块< / strong>实施symmetric cipher

您已实施简单加密而非分组密码

有很多参考文献:

希望它有所帮助。 :)