伪随机数文件加密法的问题
程序代码:
#include <stdio.h> #include <stdlib.h> union { int value; struct { char first; char second; }fran; }num; main() { FILE *fp,*name2; /* name2位加密存放的文件 */ int i,t,len,k1,k2,k3,k4,k5; float j; char name1,buf[60000]; /* name1位用户输入的要进行加密的文件 */ printf("\n input filename that you want to lock or open:"); scanf("%s",name1); if((fp=fopen(name1,"rb"))==NULL) /* 以只读的方式打开一个二进制文件 */ { printf("File cannot be opened\n"); exit(1); } else printf("File opened for encrypt\n"); j=filelength(name1); printf("\ninput key1:"); gets(k1); printf("\ninput key2:"); gets(k2); printf("\ninput key3:"); gets(k3); srand(k1); for(i=0;i<k2;i++) { k4=rand(); } k5=(k3+k2)/2; for(i=0;i<j;i++) { num.value=rand(); if(num.fran.first<=33) num.fran.first=num.fran.first+33; buf[i]=num.fran.first^buf[i]; /* 进行异或运算 */ } fopen(name2,"wb"); /* 以只写的方式建立一个二进制文件存放加密后的文件 */ fputs(buf,name2); printf("\nFile is already encrypted"); fclose(name1); /* 关闭文件 */ fclose(name2); }下面这部分的代码我有点不懂,哪位大侠解答下!
程序代码:
srand(k1); for(i=0;i<k2;i++) { k4=rand(); } k5=(k3+k2)/2; for(i=0;i<j;i++) { num.value=rand(); if(num.fran.first<=33) num.fran.first=num.fran.first+33