c语言混沌系统,请熟悉混沌原理和c高手帮个忙 (转)
请熟悉混沌原理和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高手帮个忙 (转)相关推荐
- 曙光服务器怎么进入bios_在安装电脑系统进入bios界面时应该如何设置?怎么在bios界面把硬盘格式化?求电脑高手帮个忙!谢谢了… 曙光电脑进入bios...
曙光 i620-g10 怎么设置光驱启动 三星r428笔记本电脑进入bios后设置光驱启动方法:1.三星r428笔记本电脑开机.2.显示引导屏幕(SAMSUNG 徽标)时,按 F2 键进入 BIOS ...
- c语言N*N的二维数组,c语言高手帮个忙(请先看问题,好解答
程序定义了N×N的二维数组,并在主函数中自动赋值.请编写函数fun(int a[ ][ N ],int n),该函数的功能是使数组左下半三角元素中的值加上n.例如:若n的值为3,a数组中的值为a=2 ...
- r语言聚类分析_图说层次聚类分析原理和R语言实现
1.引言 "物以类聚.人以群分".但我们面对一群人或者一堆物的时候,我们都希望将他们分分类,分类之后,我们才能更加有针对性地采取措施,从而提高工作效率. 如,我们将消费者分成若干类 ...
- 系统是否需重装,三条法则帮你忙
如果系统出现以下三种情况之一,应该是你考虑重装系统的时候了: 1)系统运行效率变得低下,垃圾文件充斥硬盘且散乱分布又不便于集中清理和自动清理: 2)系统频繁出错,而故障又不便于准确定位和轻易解决: 3 ...
- c语言组队,组队列问题。会做的高手帮帮忙啊
算法实验题4.10 组队列问题 问题描述: 组队列是一个特殊的抽象数据类型,它所支持的运算类似于队列运算 具有附加的组属性.因此入队运算 Enqueue(x)与通常定义的运算不 eue(x)运算将元素 ...
- Mackey-Glass时滞混沌系统
时滞混沌系统 时滞混沌系统即具有混沌运动的时滞系统.时滞系统是系统中一处或几处的信号传递有时间延迟的系统.所谓混沌是指具有以下特点的一类现象:由确定性产生:具有有界性:具有非周期性:初始条件具有极端敏 ...
- MATLAB编程之混沌系统
一 概述 简单来说,混沌科学中,同一个动力学方程或者是方程组,给出的初始值相差甚微,长时间后,系统的运动轨迹却有很大差别:混沌系统广泛应用在加密等领域. 二 Matlab仿真混沌系统 以che ...
- chen混沌系统的FPGA设计与实现
1.问题描述: 基于FPGA设计混沌信号发生器的一种改进方法.首先,采用Euler算法,将连续混沌系统转换为离散混沌系统.其次,基于IEEE-754单精度浮点数标准和模块化设计理念,利用Quartus ...
- 金融系统混沌 分形维matlab,Matlab实现混沌系统的控制
基于MATLAB 的各类混沌系统的计算机模拟 混沌是非线性系统所独有且广泛存在的一种非周期运动形式, 其覆盖面涉及到自然科学和社会科学的几乎每一个分支.1972年12月29日,美国麻省理工学院教授.混 ...
最新文章
- 微生物组学研究的那些”奇葩“动物模型
- wdatepicker设置时间范围_Mac新手必看,这些设置可以让你的Mac更好用!
- 一些面试题(JAVA)
- 机器学习中数据处理与可视化的python、numpy等常用函数
- 干货 | DevSecOps在携程的最佳实践
- This Style does not belong to the supplied Workbook. Are you trying to assign a style from one workb
- 小黑小波比.Ubuntu下的截图
- Java HashMap 遍历方式性能探讨
- 高并发下秒杀商品,必须知道的9个细节
- vantUI组件:van-card 自定义内容 - 踩坑篇
- eclipse Jsp 自创建tags问题
- 防抖、节流(细讲)【面试】
- Rust 学习总结(1)—— 初识 Rust,作为新势力它的前景如何?
- java菜鸟教程100_JAVA/JSP学习系列之一
- c4d打开没反应_(图文+视频)C4D野教程:总结四种制作漩涡样条的方法
- Python 基于jieba的三国演义词频分析与可视化
- 【Python入门教程】第35篇 查找元素的位置
- [渝粤教育] 扬州市职业大学 液压与气动技术 参考 资料
- P6615 Kruskal + 构造
- rhel centos 源_Rhel centos 7的fips脚本
热门文章
- 输出实心和空心菱形(C++)
- 【重要】2022年“惠普目标检测大赛”邀请通知!(有三AI报名有福利)
- JavaScript制作网页计算器
- 6部有生之年必看的BBC “教材级” 地理纪录片,免费领取!
- 2018Java实习生面试总结
- 【面试题】notify() 和 notifyAll()方法的使用和区别
- SAP入门书籍网站收集
- 开学后表情的变化--兔斯基版
- GBase 8s SQL 指南:教程———6编写高级SELECT语句
- [Linux]CentOS7校准时间--NTP