c - 文件处理: unusual error reading file

标签 c file encryption openssl file-handling

程序的输出是这样的:

虽然内容正确

(目前仅在尝试解密产生错误结果时)

但是为什么会出现这个错误?

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);

 }

我认为我需要更改文件的读/写模式,但不确定...请指导我我做错了什么???

最佳答案

在调用system之前尝试刷新或关闭fqfp。问题可能是运行 openssl 命令时刚刚写入文件的数据尚未刷新到磁盘。

关于c - 文件处理: unusual error reading file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616249/

相关文章:

c++ - C99和C++03中空指针定义的区别

c++ - fcgi_stdio 和 fcgiapp 有什么区别?

c - 是否存在将文本文件转换为字符串文字作为构建步骤的任何内容?

c - c中函数没有返回值

java - Android:如何检测 Assets 文件夹中的目录?

android - 如何在Android中写一个类似于Python函数的hash函数?

C# 可以读取不存在的文件吗?

java - 在java中检查文件创建权限的最佳方法是什么

c# - 在 ASP.NET 中使用 SetAuthCookie() 仅存储 userId 是否安全

php - javascript->php 加密解密 - 请需要说明和方法