gpt4 book ai didi

使用 16 字节 key 的 C++ Des 加密

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:47 24 4
gpt4 key购买 nike

我试图在 DES 中使用 16 字节 key 加密具有动态长度的文本,但 key 和文本的 block 大小存在问题,我正在使用 openssl 库进行 DES 加密。如何使用长度为 16 字节的 key 。

这里是我的例子:

char * Encrypt( char Key, char *Msg, int size) { 
static char* Res;
DES_cblock Key2;
DES_key_schedule schedule;

Res = ( char * ) malloc( size );

memcpy(Key2, Key, 8);
DES_set_odd_parity( &Key2 );
DES_set_key_checked( &Key2, &schedule );

unsigned char buf[9];
buf[8] = 0;

DES_ecb_encrypt(( DES_cblock ) &Msg, ( DES_cblock ) &buf, &schedule, DES_ENCRYPT );
memcpy(Res, buf, sizeof(buf));
return (Res);
}

int main(int argc, char const *argv[]) {
char key[] = "password";
char clear[] = "This is a secret message";
char *encrypted;

encrypted = (char *) malloc(sizeof(clear));

printf("Clear text\t : %s \n",clear);

memcpy(encrypted, Encrypt(key, clear, sizeof(clear)), sizeof(clear));

printf("Encrypted text\t : %s \n",encrypted);
return 0;
}

最佳答案

  1. DES 有一个 8 字节的 56 位 key (LSB 不用作 key 的一部分,它用于奇偶校验)所以你不能使用 16 字节的 key (奇偶校验通常被忽略) .

  2. 不要使用 DES,它不安全,已被 AES 取代。

  3. 不要使用 ECB 模式,它不安全,参见 ECB mode ,向下滚动到企鹅。

AES 允许 128、192 和 256 位 key 。

关于使用 16 字节 key 的 C++ Des 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38772211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com