当前位置: 首页 > news >正文

Logistic map混沌掩盖信号

  • 开学接触了一些有关混沌知识的学习,阅读量一些混沌通信的论文,对于混沌掩盖信号以确保加密通信有一定的兴趣。混沌的产生我选用的是logistic
    map映射产生混沌,主要就是一个递推公式:

在这里插入图片描述
对于这样一个式子,可以看出,每一个混沌的不同只与两个值有关,分别是a和x0.所以只要设置好这两组静态参数,就可以实现混沌同步,这样混沌掩盖的信号就能够通过同步复原出来。对于整体思路就是,设计一个程序,能够读取文本中的信息。通过信息的ascii码与产生的混沌直接相加来实现信息的加密。解密部分也是一样的混沌产生函数,这样同样的参数可以实现混沌同步。将加密的信息通过减法直接减去混沌,再通过ascii码的转化便可以实现信息的恢复。
接受部分如下:

import matplotlib.pyplot as plt
import numpy as np
import os
def chaos_generation(initial_chaos,a,length):chaos_value=float(initial_chaos)for item in range(length):anss.append(chaos_value)chaos_value=round(float(a)*chaos_value*(1-chaos_value),6)passpass
data=open('text.txt')
strr=data.read()
a=input("请输入参数一的值:")
inital_chaos=input("请输入参数二的值:")
length=len(strr)
anss=[]
mapp=[]
chaos_generation(inital_chaos,a,length)
plt.plot(np.arange(length),anss)
plt.title('Logistic map')
plt.xlabel('n_value')
plt.ylabel('chaos_value')
plt.show()
for item in strr:mapp.append(ord(item))pass
key=[]
jtem=0
for inem in anss:value=inem+mapp[jtem]jtem+=1key.append(value)pass
final_value=','.join(str(i) for i in key)
value_print=open('123.txt',mode='w+')
value_print.write(final_value)

其中text文本中运用了一段网上的英文美文:
请添加图片描述
程序中的参数设置为a=4,x0=0.3。
请添加图片描述
产生的混沌如下图,混沌的长度即为文本文件中的文本的长度。
请添加图片描述
这样就实现了混沌对于文本的掩盖,掩盖后的数据存放于文本123.text中:
请添加图片描述
再通过输出部分处理,输出部分还是用logistic映射产生混沌,其中保证参数为a=4,x0=0.3来实现混沌同步,产生一段相同的混沌,之后利用减法,直接减去混沌实现滤除。代码如下;

import math
import matplotlib.pyplot as plt
import numpy as np
def chaos_generation(initial_chaos,a,length):chaos_value=float(initial_chaos)for item in range(length):anss.append(chaos_value)chaos_value=round(float(a)*chaos_value*(1-chaos_value),6)passpass
data=open('123.txt')
str=data.read()
a=input("请输入参数一的值:")
inital_chaos=input("请输入参数二的值:")
flag=str.split(',')
receive=[]
for item in flag:receive.append(float(item))pass
anss=[]
length=len(receive)
chaos_generation(inital_chaos,a,length)
jtem=0
mapp=[]
for item in receive:numb=item-anss[jtem]#print("item-jtem=numb",item,"-",anss[jtem],"=",numb)jtem+=1mapp.append(math.ceil(numb))pass
#print(mapp)
for item in mapp:print(chr(item),end='')

在这里插入图片描述
最终可以实现混沌的滤除。
在输出部分时,浮点数的精度计算没有得到很好的计算,问题如下:
请添加图片描述
在第四行,空格的ascii码计算中,出现了错误,混沌与接受信号已经全部设置成为了六位小数,接受部分也是如此,对于这种情况很是不解,不知道问题出现在哪里,由于ascii码的计算错误,在强制转换成整数类型后会出现下图的错误,空格部分的输出有误:
请添加图片描述
最后采用了向上保留整数的方法才正常的输出,真个计算中只有空格出现了这种错误,而且只是部分空格,希望有大佬教一下。

http://www.lryc.cn/news/178551.html

相关文章:

  • 外包干了2个月,技术有明显退步...
  • 顺序表和链表
  • k8s--架构基础--云控制器管理器
  • OpenAI 更新 ChatGPT:支持图片和语音输入【附点评】
  • 数据结构:堆的简单介绍
  • 【LeetCode-中等题】654.最大二叉树
  • 基于微信小程序的刷题考试系统设计与实现(适用于各类考试类、答题类程序)
  • 用Java打印长方形、平行四边形 、三角形、菱形、空心菱形
  • es6模块化,怎么判断当前文件使用的是es6的模块化还是commenjs的模块化
  • Ubuntu 基础配置
  • CISSP学习笔记:人员安全和风险管理概念
  • ubuntu18.04 OpenGL开发(显示YUV)
  • React(react18)中组件通信06——redux-toolkit + react-redux
  • 第七章 查找 九、B+树
  • XPD911协议系列-集成同步降压多口互联控制器
  • 数字反转(蓝桥杯)
  • 十一.EtherCAT开发之microchip MCU D51+ LAN9253 的开发FOE应用(SPI directly 模式)
  • 【分布式计算】二、架构(Architectures)
  • Springboot对MVC、tomcat扩展配置
  • 网络子网划分练习
  • Leetcode刷题笔记--Hot51-60
  • 广告牌安全监测系统,用科技护航大型广告牌安全
  • volatile
  • JAVA:实现Excel和PDF上下标
  • AI写稿软件,最新的AI写稿软件有哪些
  • 干货:数据仓库基础知识(全)
  • 二分搜索简介
  • 虚拟车衣VR云展厅平台扩大了展览的触达范围
  • 云部署家里的服务器
  • 【利用冒泡排序的思想模拟实现qsort函数】