请熟悉混沌原理和c高手帮个忙 (转)[@more@]

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

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

dx/dt=-ax+ay

dy/dt=-xz+bx-y

dz/dt=xy-cz

(a,b,c为参数)

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

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

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

加密端:

#include#include#include#include#include

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#include#include#include#include

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、算法不合理,解密端所取的数肯定有误差,其实我认为异或法最好,但课题为混沌同步,没办法。

请各位指点一下啦!

c语言混沌系统,请熟悉混沌原理和c高手帮个忙 (转)相关推荐

  1. 曙光服务器怎么进入bios_在安装电脑系统进入bios界面时应该如何设置?怎么在bios界面把硬盘格式化?求电脑高手帮个忙!谢谢了… 曙光电脑进入bios...

    曙光 i620-g10 怎么设置光驱启动 三星r428笔记本电脑进入bios后设置光驱启动方法:1.三星r428笔记本电脑开机.2.显示引导屏幕(SAMSUNG 徽标)时,按 F2 键进入 BIOS ...

  2. c语言N*N的二维数组,c语言高手帮个忙(请先看问题,好解答

    程序定义了N×N的二维数组,并在主函数中自动赋值.请编写函数fun(int a[ ][ N ],int n),该函数的功能是使数组左下半三角元素中的值加上n.例如:若n的值为3,a数组中的值为a=2 ...

  3. r语言聚类分析_图说层次聚类分析原理和R语言实现

    1.引言 "物以类聚.人以群分".但我们面对一群人或者一堆物的时候,我们都希望将他们分分类,分类之后,我们才能更加有针对性地采取措施,从而提高工作效率. 如,我们将消费者分成若干类 ...

  4. 系统是否需重装,三条法则帮你忙

    如果系统出现以下三种情况之一,应该是你考虑重装系统的时候了: 1)系统运行效率变得低下,垃圾文件充斥硬盘且散乱分布又不便于集中清理和自动清理: 2)系统频繁出错,而故障又不便于准确定位和轻易解决: 3 ...

  5. c语言组队,组队列问题。会做的高手帮帮忙啊

    算法实验题4.10 组队列问题 问题描述: 组队列是一个特殊的抽象数据类型,它所支持的运算类似于队列运算 具有附加的组属性.因此入队运算 Enqueue(x)与通常定义的运算不 eue(x)运算将元素 ...

  6. Mackey-Glass时滞混沌系统

    时滞混沌系统 时滞混沌系统即具有混沌运动的时滞系统.时滞系统是系统中一处或几处的信号传递有时间延迟的系统.所谓混沌是指具有以下特点的一类现象:由确定性产生:具有有界性:具有非周期性:初始条件具有极端敏 ...

  7. MATLAB编程之混沌系统

    一 概述 简单来说,混沌科学中,同一个动力学方程或者是方程组,给出的初始值相差甚微,长时间后,系统的运动轨迹却有很大差别:混沌系统广泛应用在加密等领域. 二 Matlab仿真混沌系统     以che ...

  8. chen混沌系统的FPGA设计与实现

    1.问题描述: 基于FPGA设计混沌信号发生器的一种改进方法.首先,采用Euler算法,将连续混沌系统转换为离散混沌系统.其次,基于IEEE-754单精度浮点数标准和模块化设计理念,利用Quartus ...

  9. 金融系统混沌 分形维matlab,Matlab实现混沌系统的控制

    基于MATLAB 的各类混沌系统的计算机模拟 混沌是非线性系统所独有且广泛存在的一种非周期运动形式, 其覆盖面涉及到自然科学和社会科学的几乎每一个分支.1972年12月29日,美国麻省理工学院教授.混 ...

最新文章

  1. 微生物组学研究的那些”奇葩“动物模型
  2. wdatepicker设置时间范围_Mac新手必看,这些设置可以让你的Mac更好用!
  3. 一些面试题(JAVA)
  4. 机器学习中数据处理与可视化的python、numpy等常用函数
  5. 干货 | DevSecOps在携程的最佳实践
  6. This Style does not belong to the supplied Workbook. Are you trying to assign a style from one workb
  7. 小黑小波比.Ubuntu下的截图
  8. Java HashMap 遍历方式性能探讨
  9. 高并发下秒杀商品,必须知道的9个细节
  10. vantUI组件:van-card 自定义内容 - 踩坑篇
  11. eclipse Jsp 自创建tags问题
  12. 防抖、节流(细讲)【面试】
  13. Rust 学习总结(1)—— 初识 Rust,作为新势力它的前景如何?
  14. java菜鸟教程100_JAVA/JSP学习系列之一
  15. c4d打开没反应_(图文+视频)C4D野教程:总结四种制作漩涡样条的方法
  16. Python 基于jieba的三国演义词频分析与可视化
  17. 【Python入门教程】第35篇 查找元素的位置
  18. [渝粤教育] 扬州市职业大学 液压与气动技术 参考 资料
  19. P6615 Kruskal + 构造
  20. rhel centos 源_Rhel centos 7的fips脚本

热门文章

  1. 输出实心和空心菱形(C++)
  2. 【重要】2022年“惠普目标检测大赛”邀请通知!(有三AI报名有福利)
  3. JavaScript制作网页计算器
  4. 6部有生之年必看的BBC “教材级” 地理纪录片,免费领取!
  5. 2018Java实习生面试总结
  6. 【面试题】notify() 和 notifyAll()方法的使用和区别
  7. SAP入门书籍网站收集
  8. 开学后表情的变化--兔斯基版
  9. GBase 8s SQL 指南:教程———6编写高级SELECT语句
  10. [Linux]CentOS7校准时间--NTP