| 
				  } 
  
      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++; 			
				 |