【发布时间】:2019-01-10 17:05:16
【问题描述】:
我使用以下代码加密和解密 XML 文件:
int bytes_read, bytes_written;
unsigned char indata[AES_BLOCK_SIZE];
unsigned char outdata[AES_BLOCK_SIZE];
unsigned char ckey[] = "thiskeyisverybad";
unsigned char ivec[] = "dontusethisinput";
AES_KEY key;
AES_set_encrypt_key(ckey, 128, &key);
int num = 0;
FILE * ifp = fopen("Test.XML","rb");
FILE * ofp = fopen("Enc.XML", "wb");
while (1) {
bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp);
AES_cfb128_encrypt(indata, outdata, bytes_read, &key, ivec,&num,AES_ENCRYPT);
bytes_written = fwrite(outdata, 1, bytes_read, ofp);
if (bytes_read < AES_BLOCK_SIZE)
break;
}
num = 0;
FILE * ifpe = fopen("Enc.XML", "wb");
FILE * ofpe = fopen("TestDec.XML", "rb");
while (1) {
bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifpe);
AES_cfb128_encrypt(indata, outdata, bytes_read, &key, ivec, &num, AES_DECRYPT);
bytes_written = fwrite(outdata, 1, bytes_read, ofpe);
if (bytes_read < AES_BLOCK_SIZE)
break;
}
我参考了链接Encrypting and decrypting a small file using openssl。我在 Enc.XML 中得到一个加密文件。当我尝试解密代码时,空白记录会创建一个文件。想知道解密代码中遗漏了什么。
【问题讨论】:
-
我能知道投反对票的原因吗?我已经在堆栈溢出本身中找到了回复,但是解密逻辑不起作用。
-
你的明文是什么? (也就是
Text.XML里面是什么?) -
内容没关系,它是一个XML文件。下面的答案解决了我的疑问。想知道为什么这个问题被否决了。
标签: c++ encryption openssl