• 混沌系统在图像加密中的应用(基于量子混沌映射的伪随机数发生器)


    混沌系统在图像加密中的应用(基于量子混沌映射的伪随机数发生器)

    前言

    量子混沌映射是量子力学中一种重要的现象,它起源于经典混沌理论的研究。经典混沌理论研究的是非线性动力学系统,发现了许多看似随机的现象。然而,量子力学中的数学结构与经典力学存在很大不同,导致经典混沌理论在量子力学中不适用。因此,量子混沌理论的研究成为了量子力学中的一个热门话题。

    量子混沌理论的研究不仅在理论物理中有广泛应用,还在量子信息、量子计算、量子物理化学等领域中得到了实际应用。量子混沌映射是量子混沌理论中研究的重点之一,其本质是一种量子系统的动力学演化。量子混沌映射经典混沌映射 的不同之处在于,量子混沌映射考虑了测量和量子干涉等量子效应。

    一、伪随机数发生器

    伪随机数生成器PRNG)是一种算法,通过使用确定性算法生成看似随机的数字序列。它基于某个起始数字(种子)和一些算法来生成数字序列。因此,如果我们使用相同的种子和算法,它将生成相同的数字序列。因此,PRNG生成的序列虽然看起来随机,但实际上是可预测的,不是真正的随机数序列

    真随机数生成器TRNG)是一种硬件设备,它基于真正的物理过程来生成随机数。例如,通过利用热噪声、光子发射或辐射源等不可预测的物理事件,TRNG生成完全随机的数字序列。TRNG生成的序列不受任何算法的影响,因此不可预测和不可重复

    但是许多真随机数生成器相对较慢。一个显而易见的解决方案是使用更安全的PRNG。量子混沌理论似乎是一个可以用来提高伪随机数生成器质量的工具

    二、量子混沌映射

    量子 logistic 映射由Goggin等人于1990年提出。在他们大量的工作中,导出了一个耦合到一组振荡器和具有极低阶量子修正的 logistic 映射的踢量子系统。这个混沌映射由以下方程控制:

    在这里插入图片描述

    整个方程组只有两个参数,β 和 r 。

    三、python代码仿真

    按照公式(1)的差分方程组,我们选取 β=4.5,r=3.8,x0=0.1,y0=0,z0=0。迭代100次,可以看出 x 的时序图符合随机分布。
    在这里插入图片描述
    固定 r ,观察 β-x 的分岔图,可以看出 β > 3 左右就已经让系统进入混沌状态了,代码放下面了。
    在这里插入图片描述

    import matplotlib.pyplot as plt
    import matplotlib.pylab as mpl
    from math import exp
    mpl.rcParams['font.sans-serif'] = ['Times new roman']
    
    def sys(x, y, z, n):
        for i in range(n):
            x1 = r * (x - abs(x) * abs(x)) - r * y
            y1 = (-y * exp(-2 * b) + exp(-b) * r * ((2 - x - x.conjugate()) * y - x * z.conjugate() - x.conjugate() * z))
            z1 = (-z * exp(-2 * b) + exp(-b) * r * (2 * (1 - x.conjugate()) * z - 2 * x * y - x))
            x = x1
            y = y1
            z = z1
            listx.append(x)  # 将结果写入列表
            listy.append(y)  # 将结果写入列表
            listz.append(z)  # 将结果写入列表
            listt.append(i)  # 将结果写入列表
    
    
    if __name__ == '__main__':
        listx = []  # 创建列表存放混沌序列 x
        listy = []  # 创建列表存放混沌序列 y
        listz = []  # 创建列表存放混沌序列 z
        listt = []  # 创建列表存放时间序列
        r = 3.8
        b = 4.5
        x0 = 0.1  # 初值设定
        y0 = 0.0  # 初值设定
        z0 = 0.0  # 初值设定
        sys(x0, y0, z0, 1000)  # 初值和迭代次数
    # ----------------------------时序图----------------------------------
        plt.figure(1)  # 创建画布
        plt.scatter(listt, listx, c="blue")
        plt.xlabel("t") 
        plt.ylabel("x")  
        plt.show()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    原文地址

    对量子混沌感兴趣的读者,可以点击链接下载原文,里面有更加具体的介绍背景

    基于量子混沌映射的伪随机数发生器

  • 相关阅读:
    23种设计模式之分类总结
    Spring底层原理(一)
    分类预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络数据分类预测
    将时间序列转成图像——短时傅里叶方法 Matlab实现
    Stewart六自由度正解、逆解计算-C#和Matlab程序
    147. 对链表进行插入排序 ●●
    3.5-构建自己的Docker镜像
    css四种导入方式
    C++11单例模式
    看门狗实验
  • 原文地址:https://blog.csdn.net/weixin_42207434/article/details/133097714