TC伪随机数加密
#include
#include
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
{
k4=rand();
}
k5=(k3+k2)/2;
for(i=0;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);
}
没看明白,k1,k2,k3,k4,k5有什么用?
帮忙讲解下!
------解决方案--------------------
引用:Quote: 引用:k1是用来生成随机种子的,k2是用来将这个随机种子所生的伪随机数列移动到第k2位。
使得下一个rand()函数是第k2+1的伪随机数。
k3没有用,k4没有用,k5也没有用。就这样.....................................
没用那为什么还要写它呢?
谁写的代码你去问谁啊,又不是他写的,你问他为什么要写有什么用