提出一种使用一维元胞自动机进行图像加密和解密的图像加密系统。细胞自动机可以与基本的密码特性相对应,即平衡,免疫相关,非线性,易于在硬件中实现。与基于计算技术的经典方法相比,CA密码系统可以提供更好的性能。因此,该技术对于密码学应该是最有利的。
特征:
1.加密–
- RGB:提取单个RGB通道以加密每个图层并合并。
- 灰度:将给定的图像转换为灰度并用于加密。
2.解密–
- 密钥:对每个像素使用一个密钥,以供存储在单独文件中的解密过程使用。
- 预设:使用预定义规则解密图像。
3.结果与分析–
- 直方图:直方图分析定义为图形表示中图像像素的频率。
- 相关性:相关性是一种统计量度,指示两个或多个变量一起波动的程度。
4.规则选择–
可以选择要用于加密图像的规则并可以更改顺序(R30,R90,R120)。还可以添加其他规则。
实施/算法:
- 加密–
使用键函数将图像转换为2d矩阵并修改每个像素值。- 将灰度图像作为输入。
- 图像被转换为2D矩阵(M)。
- 执行M1 = Key(M),其中M1是加密的2D矩阵。
- 根据所发送的像素的值是奇数还是偶数,通过使用键函数h1(M)修改M矩阵的每个像素值,该像素值存储在每个像素的单独的索引文件INF中。
- 然后接收修改后的像素并将其存储在M1中。
- 矩阵M1转换为图像并另存为加密图像。
- 解密–
通过使用反向技术检索原始像素- 加密的图像作为输入
- 图像被转换为2D矩阵(M1)。
- 执行M = Key(M1),其中M是解密的2D矩阵。
- M1矩阵的每个像素值通过使用键函数h1(M)以及来自索引文件INF的相应奇/偶规则进行修改。
- 然后接收修改后的像素并将其存储在M1中。
- M矩阵被转换为图像并保存为解密图像。
- 关键函数–
在此,将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/Lakshyasukhralia/CellularAutomata