An open API service indexing awesome lists of open source software.

https://github.com/uniqueFranky/ImageEncryptor


https://github.com/uniqueFranky/ImageEncryptor

Last synced: 10 days ago
JSON representation

Awesome Lists containing this project

README

        

# 基于序列发生器的图像加密系统

## 怎么配置环境?
本程序所依赖的包在 `requirements.txt` 中记录,可使用以下命令安装:
```
pip install -r requirements.txt
```

## 如何运行?
```
python main.py
```
即可运行。
可以在main函数中指定要执行的加密算法,注释中已经标明了不同函数与报告中的测试用例的对应情况。

要运行其中一个测试,只需要注释掉其他测试,然后执行 python main.py 即可。

可以在调用函数时指定path参数为图像路径;do_attack参数为True时将执行对密文图像的攻击。

## 输出结果是什么?
每运行一个测试,将会输出两张图片,第一张是加密后的图片,第二张是对加密后的图片进行解密得到的图片。

如果没有对密文图像进行攻击,则第二张图像应该和原图像相同;若对密文图像进行了攻击,则第二张图像将和原图像有所区别。

## 有哪些预设的加密器?
预设的加密器可以在 `encrypt.py` 中查看,只要是添加了 `@encryptor_registry.register` 装饰器的类都可以被使用。

预设的加密操作在 `operation.py` 中,只要是添加了 `@operation_registry.register` 装饰器的类都可以被使用。

## 怎么添加自己的加密器?
`main.py` 中的 `check_random_trans` 函数就是一个创建自己的加密器的例子。它先创建了一个基于随机序列发生器的加密系统,然后向其中添加了傅立叶变换操作、行列置换操作。

要添加基于混沌系统序列发生器的加密系统,可以参考 `encrypt.py` 中 `ClassicChaosEncryptor` 类的实现。具体而言,除了添加变换操作外,还需要添加混沌映射。

实现加密器并用 `@encryptor_registry.register(Name)` 注册后,可以通过 `encryptor_registry.build(Name, args)` 来创建加密器的实例。添加新的加密操作同理。

也可以向预设的加密器中添加新的加密操作,调用加密器的 `add_operation` 方法即可。

**注意** Diffusion操作不能在变换域上执行,因为Diffusion期望的输入是整型,而变换域上的图片表示通常不是整数。

**注意** 一些加密算法只支持对正方形图像的加密,如Arnold变换。因此请尽量使用正方形图像进行测试,以免造成非预期的结果。