用异或法加密文件,密钥的选取用rand()的疑问?

topcool99 2004-10-19 07:40:09
因为使用的公式是:
(A xor B)xor B=A的原理。
必须两次密钥相同才可能用再次加密的方法解密。
用rand()在随机生成密钥的话,怎样保证算法的正确?
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifan5748 2004-10-19
  • 打赏
  • 举报
回复
srand(j)这个函数已经初始化了随即数,其中的j是种子,只要每次j相同,用rand生成的随机数也相同
xdspower 2004-10-19
  • 打赏
  • 举报
回复
是这样的,现在一般编程环境提供的随机数函数发生器都是伪随机数发生器,而且是环境无关的,它们产生的序列在初始条件相同的时候是相同的,也就是说在不设置srand()时,或者把srand(a)中的变量a相同时产生的随机数序列是完全相同的,这样做其实是有意义的,他可以方便检查使用了随机数的程序是否正常工作,而且只要设置了srand ——一般是设置成系统时间值,则变成真正的"随机数发生器"(其实还是伪随数序列发生器,毕竟第一个值确定了后面的值也确定了),如果你要更随机的数字,你该在每次使用rand之前再用一次srand设置新的种子(一般程序没有这个必要的,而且影响效率)。
所以只要你记住了那个j,则rand可以产生一样的"随机数"序列。
topcool99 2004-10-19
  • 打赏
  • 举报
回复
我的疑问::?????????
对 那样的话,你需要把密钥记录下来,以便于解密时使用。
的回复:
是的,
但是那个rand()怎么能那样使用呢?
道理是什么?
scanf("%ld",&j);
srand(j);
c=rand();
ch=fgetc(f1);
ch=ch^c;
再写入f2中
解密时,在输入密码J,执行一遍就可以了。
《参见c百例》
  • 打赏
  • 举报
回复
xor是不能算加密地.咔咔

icymirror 2004-10-19
  • 打赏
  • 举报
回复
那样的话,你需要把密钥记录下来,以便于解密时使用。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧