C语言 此代码是否符合分组密码的条件



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

int main(){
   int mac = 123;
   int key = 789;
   int enc = mac^key;
   printf("encrypted text  =  %dn",enc);
   int plain = enc^key;
   printf("decrypted text = %dn",plain);
   return 0;
}

这是输出:

encrypted text  =  878
decrypted text = 123
为了

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

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

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

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

密码的选择取决于实现。

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

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

有很多参考资料:

  • 分组密码 - 对分组密码和相关操作的简洁解释。
  • 维基百科 - 分组密码 - 明显的参考.. :P

希望对您有所帮助。 :)

相关内容

  • 没有找到相关文章

最新更新