gpt4 book ai didi

MCrypt 可以检查创建的哈希是否被修改吗?

转载 作者:行者123 更新时间:2023-11-30 17:29:01 24 4
gpt4 key购买 nike

我有两个函数,一个用于加密和解密字符数组(变量称为:缓冲区),然后我将字符保存在文件中,以便稍后可以解密,但我注意到,如果我修改任何加密文本中的字符,mcrypt不会警告任何错误,它只是在一段文本中显示不同的疯狂字符,其余部分看起来很完美,我想让它说加密文本字符串有错误。

这是一种方法吗?

当文本很小时,这并不明显,但因为我对 168k 个字符的文本进行哈希处理。

传递给函数的变量:buffer_len = 32;我的IVkey每个都是16位字符的列表.

int encrypt(void* buffer, int buffer_len, char* IV, char* key, int key_len)
{
MCRYPT td = mcrypt_module_open("rijndael-128", NULL, "cbc", NULL);
int blocksize = mcrypt_enc_get_block_size(td);
int n_blocks = buffer_len / blocksize;
int i = 0;
if (buffer_len % blocksize != 0)
return 1;

mcrypt_generic_init(td, key, key_len, IV);
for (i = 0; i < n_blocks; i++)
mcrypt_generic(td, ((unsigned char*)buffer) + (i * blocksize), blocksize);
mcrypt_generic_deinit(td);
mcrypt_module_close(td);

return 0;
}

int decrypt(void* buffer, int buffer_len, char* IV, char* key, int key_len){
MCRYPT td = mcrypt_module_open("rijndael-128", NULL, "cbc", NULL);
int blocksize = mcrypt_enc_get_block_size(td);
int n_blocks = buffer_len / blocksize;
int i = 0;

if (buffer_len % blocksize != 0)
return 1;

mcrypt_generic_init(td, key, key_len, IV);
for (i = 0; i < n_blocks; i++)
mdecrypt_generic(td, ((unsigned char *)buffer) + (i * blocksize), blocksize);
mcrypt_generic_deinit(td);
mcrypt_module_close(td);

return 0;
}

最佳答案

mcrypt 的最后一次错误修复是从 2007 年开始的。使用实际维护的库并使用 HMAC 功能来添加身份验证标记(也应该提供完整性)。不要忘记在计算中包含 IV。

关于MCrypt 可以检查创建的哈希是否被修改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25833232/

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