Encryption TDEA和CBC模式?

Encryption TDEA和CBC模式?,encryption,block-cipher,Encryption,Block Cipher,我试图掌握加密图和TDEA三重DES的诀窍。我知道TDEA看起来像这样: block_t xor_block = IV; write(xor_block); for (int i=0; i<message_size; i++) { block_t data = xor(xor_block, message[i]); xor_block = encrypt(data); write(xor_block); } 密文=EK3DK2EK1plaintext 我还知道链式

我试图掌握加密图和TDEA三重DES的诀窍。我知道TDEA看起来像这样:

block_t xor_block = IV;
write(xor_block);
for (int i=0; i<message_size; i++) {
    block_t data = xor(xor_block, message[i]);
    xor_block = encrypt(data);
    write(xor_block);
}
密文=EK3DK2EK1plaintext

我还知道链式分组密码在加密之前使用IV为加密和纯文本设定种子,然后输出是加密的块,新IV由第一个块的密文输出形成。对吗

这意味着CBC模式下的TDEA的流程如下:

block_t xor_block = IV;
write(xor_block);
for (int i=0; i<message_size; i++) {
    block_t data = xor(xor_block, message[i]);
    xor_block = encrypt(data);
    write(xor_block);
}
纯文本->IV->TDEA加密->新IV->密文

下一个街区是:

纯文本->新建IV->TDEA加密->新建IV->密文


这将持续n个块。这是正确的还是我不明白它是如何工作的

你对CBC工作原理的概念似乎有缺陷,或者至少我不明白你是怎么说你相信事情是可行的。特别是,您显示的是纯文本->IV,但IV在任何方面都不依赖于纯文本

您使用的密码算法基本上与CBC本身的工作方式正交,而不是针对分组密码,而不是流密码。在伪代码中,CBC如下所示:

block_t xor_block = IV;
write(xor_block);
for (int i=0; i<message_size; i++) {
    block_t data = xor(xor_block, message[i]);
    xor_block = encrypt(data);
    write(xor_block);
}

我从这里得到了很多信息:我想这些图是TDEA的工作原理,但TDEA将使用3个密钥而不是一个密钥,加密将是TDEA?嗯…很好的图!是的,在这种情况下,您可以将3DES看作是一种具有168位密钥和64位块的单块加密算法。谢谢,它非常有趣!