使用元胞自动机的图像加密
提出一种利用一维元胞自动机进行图像加密和解密的图像加密系统。细胞自动机具有平衡、相关免疫、非线性等基本密码特性,易于硬件实现。与基于计算技术的经典方法相比,CA 密码系统可以提供更好的性能。因此,这种技术应该最有利于密码学。
特征:
1。加密–
- RGB: 提取单个 RGB 通道对各层进行加密合并。
- 灰度:将给定图像转换为灰度并用于加密。
2。解密–
- 密钥:对存储在单独文件中的解密过程中的每个像素使用一个密钥。
- 预设:使用预定义的规则解密图像。
3。结果和分析–
- 直方图:直方图分析定义为图像像素在图形表示中的出现频率。
- 相关度:相关度是一个统计量,表示两个或多个变量一起波动的程度。
4。规则选择– 可选择用于加密图像的规则,并可更改顺序(R30、R90、R120)。还可以添加更多规则。
实现/算法:
- 加密–
将图像转换为 2d 矩阵,并使用关键函数修改每个像素值。
- 灰度图像作为输入。
- 图像被转换成 2D 矩阵。
- 执行 M1 =密钥(M),其中 M1 是加密的 2D 矩阵。
- 根据发送的像素值是奇数还是偶数,通过使用 Key 函数 h1(M)修改 M 矩阵的每个像素值,该值存储在每个像素的单独索引文件 INF 中。
- 修改后的像素随后被接收并存储在 M1。
- 矩阵 M1 转换为图像,并保存为加密图像。
- 解密–
使用反向技术检索原始像素
- 加密图像作为输入
- 图像被转换成 2D 矩阵(M1)。
- M =执行密钥(M1),其中 M 是解密的 2D 矩阵。
- 使用索引文件 INF 中对应的奇/偶规则,通过使用 Key 函数 h1(M)来修改 M1 矩阵的每个像素值。
- 修改后的像素随后被接收并存储在 M1。
- 将 M 矩阵转换为图像并保存为解密图像。
- Key Function–
这里将 2D 矩阵作为输入,在加密和解密过程中调用这个 Key()函数,使用元胞自动机规则向量修改输入像素值。
- 输入像素被转换成 8 个块的二进制数。
- 每个块应用不同的细胞自动机规则。
- 如果输入值为偶数,则交替应用规则 90 和 30。
- 如果输入值为奇数,则应用规则 90。
- 规则配置一直运行,直到初始输入块重复。
- 注意到递归阶段,并计算该周期的一半 hc = n/2。
- 规则再次运行,但这一次运行了半个周期(hc)。
- 数组的最终输出被转换回十进制数,并放入输入块的加密/解密值中。
- 重复步骤 1 到步骤 7,直到所有灰度值被加密/解密。
工具: 这个图像加密系统已经在 Python 和 MATLAB 上准备好了。
使用以下库:
OpenCV: To extract image pixels and modify it.
Numpy: To make use of arrays in key function.
Matplotlib: To obtain results (histogram, correlation)
应用了以下细胞自动机规则:
Rule 90
Rule 30
Rule 120
整个程序分为几个模块:
Encryption Script
Decryption Script
Result and Analysis
应用– 图像加密是我开发的程序的首要任务,虽然提出的系统不仅仅局限于图像加密。可以修改系统以实现:
- 编码消息
- 图像压缩
- 伪随机数的产生。
项目链接: https://github . com/laksyakskhralia/cellara automatia
版权属于:月萌API www.moonapi.com,转载请注明出处