c++ - TripleDes 会改变数据大小吗

标签 c++ visual-c++ encryption tripledes

我有一个使用 Triple DES 加密和解密数据的代码。 代码一切正常。

我对 Triple Des 有疑问。 Triple DES 在执行加密过程时会改变数据大小。 我用谷歌搜索,对得到的答案感到非常困惑。

它会改变吗?如果是意味着如何找到加密数据的大小。

代码如下:

unsigned char   initVector[8];
unsigned char*  block;
int     j;

    memset(initVector, 0xEE, sizeof(initVector));
    nBlocks = dwDataSize / 8;

    for (i=0; i < nBlocks; i++)
    {
        block = (unsigned char*) pData + i*8;
        memset(initVector, 0xEE, sizeof(initVector));
        des_ede3_cbc_encrypt((unsigned char *)block,(unsigned char *)block, 8,
                m_Schedule1 , m_Schedule2, m_Schedule3, (C_Block *)initVector, DES_ENCRYPT);

我在另一个讨论中看到大小会改变。

这是链接。 Length of Encrypted String

问候, 湿婆./

最佳答案

TripleDES 是一个分组密码原语。 block 密码的工作原理是根据 key 创建输入数据 block (应该与随机数据无法区分)的排列,只有在 key 已知的情况下才能反转。

因此,加密数据占用的空间量与输入数据完全相同(除了最后一个 block 的填充)。典型的 block 大小是 4 到 32 字节之间的任意 2 的幂。

(一个思想实验:密文不可能比输入,因为这样两个不同的输入必须映射到相同的密文,这是不可能的。反之,如果密文更长,那么就会有某些密文永远不会成为加密的结果,因此不会“与随机数据无法区分”。)

关于c++ - TripleDes 会改变数据大小吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347148/

相关文章:

c++ - Itanium 和 MSVC ABI 中跨模块边界的 RTTI

c++ - 使用 ios::ate 重写数据

encryption - 加密脚本以嵌入文本文件

c++ - 宏定义如何用于内存泄漏检测?

c++ - 为 C++ 编写不递增的味觉测试程序

c++ - InstallShield 在安装时不安装可再发行的 VC++

java - 保护密码 SHA-1 Java

database - 加密数据仅供作为数据所有者和算法的用户访问

c++ - 汇编代码,错误 C2443 : operand size conflict

c++ - 如何在 C++ 中使用 OpenCV 解码 mpeg 运动 vector ?