读取,加密和写入字节块

时间:2013-01-05 14:34:10

标签: c fwrite eof fread

  • 从文件中读取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);
}

1 个答案:

答案 0 :(得分:4)

不,这是正确的......

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

...如果你真的需要它。

但是你不需要将数组的剩余部分归零,因为你已经用...清除它了

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

......你在每次犯罪之前都在打电话。