}
cipher_idea(input,output,Z); // 对64位明文加密
for (y=0;y<x;y++)
{
if (noisy) if (count++%256==0) printf("."); //每加密64次明文输出一次.
write_word16_to_file(output[y],out); //密文输出到OUT文件流中
}
}
}
// 对密文解密, 与加密过程相似, 不同的地方给出注释
void decipher_file(FILE *in,FILE *out,word16 *key)
{
word16 input[4],output[4];
int x,y;
IDEAkey Z,DK;
int count=0;
long length=0;
en_key_idea(key,Z); // 生成52个子密钥
de_key_idea(Z,DK); // 通过加密密钥生成解密密钥
end_of_file=0;
fread(&length,sizeof(long),1,in); //读出文件长度
while (!end_of_file)
{
x=0;
while (x<4)
{
input[x]=read_word16_from_file(in);
if (end_of_file)
break;
x++;
|