1

プログラムの出力は次のとおりです。

正しい内容なのに

(今のところ、間違った結果を生成する復号化を試みる場合のみ)

しかし、なぜこのエラーですか??

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

 }

ファイルの読み取り/書き込みモードを変更する必要があると思いますが、よくわかりません...何が間違っているのか教えてください???

4

2 に答える 2

1

への呼び出しの前に、フラッシュまたはクローズfqを試してください。おそらく、ファイルに書き込んだばかりのデータが、openssl コマンドの実行時にまだディスクにフラッシュされていないことが問題です。fpsystem

于 2011-09-30T22:59:14.253 に答える
0

opensslをアップグレードする方法

最新のプラットフォームにアップグレードします。

OpenSSL Tarballs

詳細については、Puttyおよびyumコマンドを使用してOpenSSLを更新する方法を参照してください。

于 2011-10-01T04:32:37.457 に答える