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

原创 2001年04月14日 19:16:00

    小弟毕业设计做的是“混沌同步原理在保密通信中的应用及软件开发”,由于编程功底不够,现在在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、算法不合理,解密端所取的数肯定有误差,其实我认为异或法最好,但课题为混沌同步,没办法。
    请各位指点一下啦!
   

 


 

恳请高手帮个忙

学生信息管理系统 .style1 {color: #FFFFFF} --> function checkuser() { if (document.reg...
  • gashan9480
  • gashan9480
  • 2017年01月03日 00:38
  • 56

请高手个忙可以

Android知识库 只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试现在运行看看,这样我们可以知道提前升的天数 SpringSide .学习策略是指学习过程中系统所采用的推理策略你计...
  • gongyanli2797
  • gongyanli2797
  • 2017年01月26日 17:01
  • 124

混沌,分形与人工智能

混沌这里所说的混沌并不是混乱之意,而是世间万物的一种属性。人们试图找到自然界事物发展的一定定律,然后用数学公式抽象出来,希望能预测将来事物发展轨迹,大部分时候可以奏效,但是极少时候也会出现问题,出现不...
  • LXYTSOS
  • LXYTSOS
  • 2015年09月24日 12:31
  • 4318

第八届蓝桥杯大赛试题及解答

题目: 购物单     小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。     这不,XX大促销又来了!老板夫人开出了长长...
  • apple2048111
  • apple2048111
  • 2017年04月21日 18:39
  • 845

Logistic混沌序列加密

Logistic混沌置乱,先不说有多复杂,其实很简单。 Logistic函数是源于一个人口统计的动力学系统,其系统方程形式如下:  X(k+1) = u * X(k) * [1 - X(k...
  • qq_23291783
  • qq_23291783
  • 2016年01月29日 09:48
  • 1398

【图像加密】图像处理之Logistic混沌序列加密

Logistic混沌序列加密。
  • hujingshuang
  • hujingshuang
  • 2015年05月14日 10:54
  • 3591

混沌方法的数字图像加密

Abstract:目前混沌系统与加密技术相结合是现如今最热门的一个课题,虽然有大量的加密算法面世,但是这些加密算法并不成熟,仍然需要进一步的研究。本文采用像素位置置乱变换和像素值替代变换相结合的加密思...
  • hlx371240
  • hlx371240
  • 2015年05月09日 20:01
  • 4962

混沌时间序列的几个例子

混沌时间序列的例子:虫口模型、洛伦兹方程(天气预报模型)、CHne's吸引子 奇怪吸引子、吸引子 几个例子的MATLB程序,可以看到混沌序列的样子...
  • ldj1208
  • ldj1208
  • 2016年07月12日 23:01
  • 1795

混沌系统解释

混沌系统解释
  • wik_123
  • wik_123
  • 2013年01月05日 11:09
  • 11113

大数据时代的数学思维(2)-混沌产生随机数

逻辑斯蒂映射的形式为 x_(n+1)=ax_n(1-x_n), 其中a是参数,当a>=3.569946时,x的值不再振荡,进入混沌,在此之前,x的值处于稳定状态,a值较小时,稳定在某个固定值,较大...
  • u010255642
  • u010255642
  • 2013年08月29日 10:52
  • 1662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:请熟悉混沌原理和c高手帮个忙
举报原因:
原因补充:

(最多只允许输入30个字)