程序的输出是:
虽然内容正确
(目前仅在尝试解密时产生错误的结果)
但为什么会出现这个错误?
udit@udit-Dabba /opt/lampp/htdocs $ ./a.out
Error reading password from BIO
Error getting password
Salted__�Yq\��v��u�&2�t���-�
程序代码是这个 -
#include <stdio.h>
#include <stdint.h>
void crypto(uint8_t *key, uint32_t keylen, uint8_t *data, uint32_t datalen);
int main () {
uint8_t icv[10]="uditgupta";
uint8_t ekey[14]="1234567891011";
uint8_t *key=ekey;
uint8_t *data=icv;
crypto(ekey,13,icv,9);
return 0;
}
void crypto(uint8_t *key, uint32_t keylen,uint8_t *data, uint32_t datalen)
{
int ch,i;
uint8_t mydata[100],modata[100];
uint8_t *p=mydata;
FILE *fp,*fq,*fr;
fp=fopen("key","w");
fputs(key,fp);
fq=fopen("file.txt","w");
fputs(data,fq);
memset(data,0,sizeof(data));
system("sudo openssl enc -aes-256-cbc -salt -in file.txt
-out file.enc -pass file:key");
fr=fopen("file.enc","r");
memset(mydata,0,sizeof(mydata));
i=0;
while( (ch=fgetc(fr)) != EOF) {
mydata[i]=ch;
i++;
}
i=0;
puts(p);
}
我想我需要改变文件的读/写模式但不确定...请指导我做错了什么???
答案 0 :(得分:0)
在致电fq
之前,请尝试刷新或关闭fp
和system
。问题可能是当你运行openssl命令时,你刚刚写入文件的数据还没有被刷新到磁盘。
答案 1 :(得分:0)