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

suk*_*vir 0 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;
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

encrypted text  =  878
decrypted text = 123
Run Code Online (Sandbox Code Playgroud)

use*_*071 5

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

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

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

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

密码的选择取决于实现.

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

什么您已经实现了,就是简单的加密,而不是分组密码.

有很多参考文献:

希望能帮助到你.:)