Chen‘s混沌的图像加密算法【附代码】

✅博主简介:本人擅长建模仿真、数据分析、论文写作与指导,项目与课题经验交流。项目合作可私信或扫描文章底部二维码。


  1. 在计算机迅猛发展和互联网用户不断增加的背景下,图像成为人们生活和工作中不可或缺的重要工具。然而,网络黑客窃取重要图像数据的行为对政治安全、社会稳定以及个人隐私构成极大威胁。图像具有数据量大、冗余度高、相邻像素相关性强的特点,需要新的加密方法来保护图像数据安全。混沌系统因其对参数变化的敏感性和较强的伪随机性,适用于加密领域。

  2. 具体加密步骤

    • 密钥生成:求出图像的汉明距离、汉明逆距离、汉明反距离、像素和,然后将这四个数与用户的输入值相加得到密钥值。
    • 混沌序列生成:将密钥代入到改进的 Chen’s 方程中,得到中间序列。
    • 加密过程:结合中间序列,使用扩散、zigzag 置乱、DNA 编码等方法对原图像进行加密,得到密文图像。
      • 扩散操作可以使图像像素值更加均匀地分布,增加破解难度。
      • zigzag 置乱可以打乱图像像素的位置,进一步提高安全性。
      • DNA 编码则利用 DNA 分子的编码规则对图像进行编码,增加加密的复杂性。
  3. 创新点
    此算法创新性地将 zigzag 置乱、DNA 编码、改进的 Chen’s 混沌结合到一起,提升了加密效果。通过多种加密方法的组合,增加了加密的强度和安全性,使得破解更加困难。

二、基于粒子群算法的图像加密方法

  1. 优化混沌方程系数
    首先使用粒子群算法优化改进的 Chen’s 混沌方程的系数。粒子群算法是一种优化算法,可以通过不断调整混沌方程的系数,使其生成的混沌序列更加随机和复杂,从而提高加密效果。

  2. 生成加密序列

    • 将优化后的系数代回改进的 Chen’s 混沌方程并生成序列。
    • 同时,将密钥代入改进的 4D 超混沌方程中,得到第二条混沌序列。
    • 将这两条混沌序列组合后对图像进行扩散置乱得到密文图像。
  3. 适应度函数确定
    适应度函数的求法是将图像进行 SHA256 处理得到对应的哈希值,再将哈希值异或处理后与用户输入值相加得到密钥。将密钥与当前改进的 Chen’s 混沌方程的系数代入方程中,得到第一条混沌序列。然后,将密文图像中各个通道的信息熵、UACI、NPCR 的和的相反数作为适应度函数值。信息熵反映了图像的随机性,UACI 和 NPCR 则衡量了加密前后图像的差异程度。通过优化适应度函数,可以提高加密算法的性能。

  4. 创新点
    此算法创新性地提出了序列组合方法,为图像加密算法的构建提供了一种新的思路。通过将不同混沌序列组合起来进行加密,增加了加密的复杂性和安全性,同时利用粒子群算法优化混沌方程系数,提高了加密效果。

三、算法验证与应用

  1. 模拟仿真
    使用 Matlab 平台对提出的两种图像加密算法进行模拟仿真。仿真结果表明,这两种算法均符合图像加密算法的要求,能够有效地保护图像数据安全。

  2. 图像加密系统制作
    制作图像加密系统,为进一步推广和应用这两种算法提供了便利。图像加密系统可以方便用户对图像进行加密和解密操作,提高了算法的实用性和易用性。

  3. 意义与价值
    通过本的工作,为图像加密领域的研究和应用提供了新的思路和方法。这两种基于改进 Chen's 混沌的图像加密算法具有较高的安全性和实用性,可以为保护图像数据安全提供有效的解决方案。

import numpy as np

# 计算汉明距离
def hamming_distance(image):
    # 计算汉明距离的具体实现
    pass

# 计算汉明逆距离
def hamming_inverse_distance(image):
    # 计算汉明逆距离的具体实现
    pass

# 计算汉明反距离
def hamming_opposite_distance(image):
    # 计算汉明反距离的具体实现
    pass

# 计算像素和
def pixel_sum(image):
    # 计算像素和的具体实现
    pass

# 改进的 Chen's 混沌方程
def improved_chens_equation(key):
    # 改进的 Chen's 混沌方程的具体实现
    pass

# DNA 编码
def dna_encoding(image):
    # DNA 编码的具体实现
    pass

# zigzag 置乱
def zigzag_scrambling(image):
    # zigzag 置乱的具体实现
    pass

# 扩散操作
def diffusion(image, sequence):
    # 扩散操作的具体实现
    pass

# 图像加密方法
def image_encryption(image, user_input):
    hamming_dist = hamming_distance(image)
    hamming_inv_dist = hamming_inverse_distance(image)
    hamming_opp_dist = hamming_opposite_distance(image)
    pixel_sum_val = pixel_sum(image)

    key_value = hamming_dist + hamming_inv_dist + hamming_opp_dist + pixel_sum_val + user_input

    intermediate_sequence = improved_chens_equation(key_value)

    encrypted_image = diffusion(image, intermediate_sequence)
    encrypted_image = zigzag_scrambling(encrypted_image)
    encrypted_image = dna_encoding(encrypted_image)

    return encrypted_image

import numpy as np
import hashlib

# 改进的 Chen's 混沌方程
def improved_chens_equation(coefficients, key):
    # 改进的 Chen's 混沌方程的具体实现
    pass

# 改进的 4D 超混沌方程
def improved_4d_hyperchaotic_equation(key):
    # 改进的 4D 超混沌方程的具体实现
    pass

# 粒子群算法优化混沌方程系数
def particle_swarm_optimization():
    # 粒子群算法优化混沌方程系数的具体实现
    pass

# 信息熵计算
def information_entropy(image):
    # 信息熵计算的具体实现
    pass

# 计算 UACI
def unified_average_change_intensity(image1, image2):
    # 计算 UACI 的具体实现
    pass

# 计算 NPCR
def number_of_pixels_change_rate(image1, image2):
    # 计算 NPCR 的具体实现
    pass

# 图像加密方法
def image_encryption_with_pso(image, user_input):
    # 使用粒子群算法优化改进的 Chen's 混沌方程的系数
    optimized_coefficients = particle_swarm_optimization()

    # 生成第一条混沌序列
    key1 = hashlib.sha256(image.tobytes()).hexdigest()
    key1 = int(key1, 16) ^ user_input
    sequence1 = improved_chens_equation(optimized_coefficients, key1)

    # 生成第二条混沌序列
    sequence2 = improved_4d_hyperchaotic_equation(key1)

    # 组合混沌序列并进行扩散置乱
    combined_sequence = np.concatenate((sequence1, sequence2))
    encrypted_image = diffusion(image, combined_sequence)

    # 计算适应度函数值
    entropy = information_entropy(encrypted_image)
    uaci = unified_average_change_intensity(image, encrypted_image)
    npcr = number_of_pixels_change_rate(image, encrypted_image)
    fitness_value = -(entropy + uaci + npcr)

    return encrypted_image, fitness_value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坷拉博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值