我面临着AES加密文本的问题,需要一点帮助,这里有一个解释,我使用这个函数将纯文本转换为密文。
{{1}}
当我们使用加密时,此功能非常有效,但是当我尝试使用strlen计算密文长度时,我得不到确切的长度, 我有谷歌,并找到了关于密码文本打印的一些信息 使用%c等于长度len的循环。
我的查询是如何将密文存储在具有确切长度的文件中?因为strlen(密文)没有给出确切的长度,有什么方法可以存储密文?
任何帮助都将非常感谢:)提前致谢
答案 0 :(得分:1)
这个接口的重点是*len
现在包含密文的长度(我想它以纯文本的值开头)。 EncryptFinal添加填充,以便更改长度。如果普通的长度为16
密文的长度为32。
您无法使用strlen
来计算长度。这可以在argv
条目的情况下完成,因为这些是设计的字符串。 key
更像是密码。这是一个非常加密的弱系统(硬编码盐,5轮等)。
ciphertext = aes_encrypt(&en, (unsigned char *)input[i], &len);
之后
如果你想将密文写入文件,只需执行类似
FILE *cipher = NULL;
cipherfile=fopen("mycipher.txt", "wb");
if (NULL ==cipherfile){ /* error handling here */
}
if (1 != fwrite(ciphertext, len, 1, cipherfile)){ /* error handling */
}
close(cipherfile);
因为密文长度在len
。原作者at GitHub可能会改为使用olen
(现在它未被使用)。因此(更好)&olen
可以在上面的两个调用(aes_encrypt
和fwrite
)中使用,然后len
保持输入长度,可用于解密检查,等