2
  • ファイルから16バイトを読み取ります。
  • この16バイトを暗号化します。
  • 暗号化されたバイトを別のファイルに書き込みます。
  • ファイルの終わりまで上記のことを繰り返します。

最後の呼び出しが16バイト未満の場合、バッファを0で埋めます
。これは正しい方法ですか?

FILE *fp = fopen("name", "r+");
FILE *fpout = fopen("name", "w+");
char plain_text[16];
fseek(fp, 0, SEEK_SET);

while(!feof(fp)){
  memset(plain_text, 0, sizeof(plain_text);
  read_bytes = fread(plain_text, 1, 16, fp);
  if(read_bytes < 16){
    i = read__bytes;
    read_bytes += 1;
    for(i, i<16, i++) plain_text[read_bytes] = 0;
  }
  encrypt-this-part-of-file
  fwrite(encBuffer, 1, 16, fpout);
}
4

1 に答える 1

4

いいえ、これは正しいでしょう...

if(read_bytes < 16)
{
    for(i = read_bytes; i<16; i++)
    {
        plain_text[i] = 0;
    }
}

...実際に必要だった場合。

ただし、すでにクリアしているので、配列の残りの部分をゼロにする必要はありません...

memset(plain_text, 0, sizeof(plain_text));

...freadを呼び出す前に呼び出していること。

于 2013-01-05T14:47:33.990 に答える