# 图像秘密共享
**Repository Path**: hu-xiao-yun/image-secret-sharing
## Basic Information
- **Project Name**: 图像秘密共享
- **Description**: 这是一个用于对图像进行秘密分发的应用,也可以进行图像的隐藏与提取
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-03-22
- **Last Updated**: 2024-03-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 图像秘密共享
#### 介绍
什么是图像秘密共享:秘密共享的思想是将秘密以适当的方式拆分,拆分后的每一个份额由不同的参与者管理,单个参与者无法恢复秘密信息,只有若干个参与者一同协作才能恢复秘密消息。更重要的是,当其中任何相应范围内参与者出问题时,秘密仍可以完整恢复,图像秘密共享是秘密共享在图像领域的应用。
这是一个用于对图像进行秘密分发的应用,对于每一个秘密份额可以利用图像进行隐藏与提取,用到了openssl和mysql,相关的包已经打包。
#### 软件架构
#### 安装教程
1. 在mysql里相应的数据库新建三张表:pub_info_cont,pub_info_num,user_password.
```
create table pub_info_cont(cnt int unsigned not null);
create table pub_info_num(num int not null primary key,pos varchar(150) not null);
create table user_password(name varchar(50) not null primary key,password varchar(50) not null);
```
我这里实现了登录界面,如果你不需要,可以修改代码去掉登录界面,如果要用登录界面,需要在user_password里添加用户。需要注意的是,user_password的密码是由原始密码Md5加密后Base64编码得到,添加用户时需要注意,下面是处理原始密码的qt代码
```
QByteArray array="密码";
QCryptographicHash hash(QCryptographicHash::Md5); //Md5加密
hash.addData(array); //添加数据
QByteArray retArray = hash.result(); //加密后的数据
QByteArray retArrayBase64 = retArray.toBase64();
```
2. 修改配置文件info.json并把它复制到运行目录下,格式如下
```
{
"name":"用户名称",//可以不设置
"password":"密码",//可以不设置
"sqluser":"sql用户名",
"sqlpassword":"sql密码",
"dbname":"保存上面三张表所在数据库名",
"ip":"数据库IP",
"port":"数据库端口"
}
```
3. 在qtcreator编译运行
#### 使用说明
登录界面:

除了登录界面,主要有三个界面,图像秘密分发界面、图像恢复界面和图像隐藏界面
1.分发界面

这个界面需要输入参与人数,点击确认键后会生成子秘密的名字,可以修改但必须保证不重复。然后在下面设置授权结合,也就是那些组合可以恢复出图像。
2.恢复界面

3.隐藏界面
