项目简介
本项目是基于Go语言的图像加密与解密系统。它利用切割和随机旋转图像的方式达成加密效果,具备元信息管理、文件存储和缓存存储等功能。系统可把大图像切割成多个小片段并随机旋转,借助Redis存储元数据信息,支持使用文件系统或缓存来存储图像片段,还能依据存储的片段和元数据恢复出原始图像。
项目的主要特性和功能
- 图像加密:对原始图片切片并随机旋转角度进行加密。
- 图像解密:将切片后的图片复位拼装,还原为原始图片。
- 灵活存储:可自定义切片图片的存储方式,支持文件系统、云存储等。
- 元信息管理:可自定义切片图片元数据存储方式,支持数据库、缓存、文件等方式。
安装使用步骤
假设用户已经下载了本项目的源码文件,可按以下步骤操作:
1. 安装依赖:使用以下命令安装项目所需的依赖库。
2. 配置Redis:确保本地或远程的Redis服务器可用,并配置连接参数(如地址、密码等)。
3. 运行测试:运行项目中的测试代码,确保各项功能正常工作。
4. 使用切割加密功能:调用相关函数或方法,将待加密的图像切割成多个片段,并随机旋转每个片段。同时,将元数据信息保存到Redis中。示例代码如下:
```go
// 切片图片为文件存储方式,存储路径为当前目录
s := imageEncrypt.NewFileStorage("./")
// 元信息用redis存储 m := imageEncrypt.NewMetaByRedis("127.0.0.1:6379", "test")
// 将图片切割为6行4列 c := imageEncrypt.NewRectangleCut(4, 6, s, m)
// 读取将要切割图片 f, err := os.Open("/Users/mac/Downloads/test1.png") if err != nil { return } defer f.Close()
// 第一个参数:文件流
// 第二个参数:图片名
// 第三个参数:元信息存储的查询条件(这里表示redis中的key)
c.Cutting(f, "test1.png", "test-1")
5. **存储图像片段**:将切割并旋转后的图像片段保存到文件系统中。
6. **解密恢复图像**:通过读取存储的片段和元数据,使用相关函数或方法恢复出原始图像。示例代码如下:
go
// 元数据存储接口
m := NewMetaByRedis("127.0.0.1:6379", "test")
// 切片图片存储接口 s := NewFileStorage("./")
// 还原图片 a := NewFileSystemAssembe(s, m) , , err := a.Assembing("test1") if err != nil { log.Fatal(err) } ```
注意事项
- 请确保在运行项目之前已经安装了Go语言环境。
- 在使用Redis存储元数据信息时,需要确保Redis服务器可用并且配置正确。
- 在测试过程中,请确保测试环境干净,避免影响测试结果。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】