分享
 
 
 

请熟悉混沌原理和c高手帮个忙

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

小弟毕业设计做的是“混沌同步原理在保密通信中的应用及软件开发”,由于编程功底不够,现在在c语言编程上遇到了问题,不解决的话便难以往下作.希望大家有一点头绪都我告诉我,email:gdlc@163.net。千万个thanks!

混沌学的核心是“蝴蝶效应”(蝴蝶效应的意思是说:北京的一只蝴蝶扇动一下翅膀,会引起纽约的一场风暴),这只蝴蝶演绎的图形在科学上被称作洛伦兹吸引子,是由下面的一个非线性方程组决定的:

dx/dt=-ax+ay

dy/dt=-xz+bx-y

dz/dt=xy-cz

(a,b,c为参数)

我们可以用数值方法求解这个方程组,我采用了欧拉法,这样可以取出一系列的数,其中x在-25到+25

之间,作为我们的保密信号。

我先作的是静态加密,也就是加密端和解密端信号相同,程序如下:

加密端:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>

#include<math.h>

main()

{

FILE *fp1,*fp2;

char in_fname[30];/*输入要加密的文件名*/

char out_fname[30];/*输入加密后的文件名*/

float ch;

float x0=1,y0=1,z0=1;/*初值 */

float a=16.0,b=45.92,c=4.0;

float x,y,z;

float T=0.00001;/*欧拉法中所取的步长*/

printf("\n请输入要加密的文件名:\n");

gets(in_fname);/*得到要加密的文件名*/

printf("请输入加密后的文件名:\n");

gets(out_fname);/*得到加密后要的文件名*/

fp1=fopen(in_fname,"rb");

if(fp1==NULL)

{

printf("cannot open in-file.\n");

exit(1);/*如果不能打开要加密的文件,便退出程序*/

}

fp2=fopen(out_fname,"wb");

if(fp2==NULL)

{

printf("cannot open or create out-file.\n");

exit(1);/*如果不能建立加密后的文件,便退出*/

}

/*加密算法开始*/

while(!feof(fp1))

{ch=fgetc(fp1);

x=x0+T*a*y0-T*a*x0;

y=y0+T*b*x0-T*x0*z0-T*y0;

z=z0+T*x0*y0-T*c*z0;

fputc(ch+x,fp2);/*相加后写入fp2文件*/

x0=x;

y0=y;

z0=z;

}

fclose(fp1);

fclose(fp2);

}

解密端只需把 fputc(ch+x,fp2)该为 fputc(ch-x,fp2)即可,静态只是在加密端把文件加上一组数,然后

在解密端把这组数减去,不涉及过多的程序问题,因此很好实现。

而在动态同步加密时我开始遇到问题,同步时解密端作以下改动:dx/dt=-ax+ay,dy/dt=-sz+bs-y

,dz/dt=sy-cz (a,b,c为参数),即dy/dt dz/dt中的x用s取代,s是加密后得到的文件。

加密端程序不变,解密端为:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>

#include<math.h>

main()

{

FILE *fp1,*fp2;

char in_fname[30];/*输入要解密的文件名*/

char out_fname[30];/*输入解密后的文件名*/

float ch;

float x0=1,y0=1,z0=1;

float a=16.0,b=45.92,c=4.0;

float x,y,z;

float T=0.00001;

printf("\n请输入要解密的文件名:\n");

gets(in_fname);/*得到要解密的文件名*/

printf("请输入解密后的文件名:\n");

gets(out_fname);/*得到解密后要的文件名*/

fp1=fopen(in_fname,"rb");

if(fp1==NULL)

{

printf("cannot open in-file.\n");

exit(1);/*如果不能打开要解密的文件,便退出程序*/

}

fp2=fopen(out_fname,"wb");

if(fp2==NULL)

{

printf("cannot open or create out-file.\n");

exit(1);/*如果不能建立解密后的文件,便退出*/

}

/*解密算法开始*/

while(!feof(fp1))

{ch=fgetc(fp1);

x=x0+T*a*y0-T*a*x0;

y=y0+T*b*ch-T*c*ch*z0-T*y0;

z=z0+T*ch*y0-T*c*z0;

fputc(ch-x,fp2);/*相减后写入fp2文件*/

x0=x;

y0=y;

z0=z;

}

fclose(fp1);

fclose(fp2);

}

无法把原文件恢复,我想有以下几个原因:1、处理文件方法有错(改为fread、fwrite?);2、算法不合理,解密端所取的数肯定有误差,其实我认为异或法最好,但课题为混沌同步,没办法。

请各位指点一下啦!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有