}
cipher_idea(input,output,DK); //解密过程与加密函数相同
for (y=0;y<x;y++)
{
if (noisy) if (count++%256==0) printf(".");
if (length-->0) // 注意: 分两次写入的原因是有些字符可能是8位的,而密文一定是16位的
write_char_to_file(((char)(output[y]>>8)),out);// 写入解密得到的明文高8位
if (length-->0)
write_char_to_file(((char)(output[y]&255)),out); //写入低8位
}
}
}
//最终文件生成, 参数是文件名
void swap_files_and_clean_up(char *file)
{
long fsize,count;
FILE *fp;
char temp[100];
if (overwrite) //如果要求覆盖文件
{
if ((fp=fopen(file,"r+b"))==NULL) //失败
{
printf("\nError overwriting old file, security compromised.\n");
}
else
{
fseek(fp,0l,SEEK_END);//定位到最后一个字符的位置
fsize=ftell(fp); //取得文件长度
fseek(fp,0l,SEEK_SET); //文件开始位置
for (count=0;count<fsize;count++)
fputc('0',fp); //用0填充文件
fclose(fp);
}
|