• 大小: 237KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签:

资源简介

本项目使用CLion软件编写,使用语言为C++。
项目实现JPEG(JPG)格式图片中隐藏信息及隐藏信息的提取功能,支持中文信息隐藏。
注释完备,操作简单!

资源截图

代码片段和文件信息

#include
#include

using namespace std;

class picture {
private:
    ifstream ifile_picture;//该数据类型表示输入文件流,用于从文件读取信息。
    ifstream ifile_txt;
    ofstream ofile_picture;//该数据类型表示输出文件流,用于创建文件并向文件写入信息。
    ofstream ofile_txt;
    int length_ifile_picture length_ifile_txt;//输入图片的长度
    char name_ifile_picture[50] name_ifile_txt[50] name_ofile_picture[50] name_ofile_txt[50];
public:
    void Open(ifstream &ifile char *name int &length);

    void Encode();//图片信息隐藏
    void Decode();//图片信息提取
};

void picture::Open(ifstream &ifile char *name int &length) {
    ifile.open(name ios::binary | ios::in);//ios::in表示打开文件用于读取。
    if (!ifile) {
        cout << “Open “ << name << “ failed!“ << endl;
        return;
    }
    ifile.seekg(0 ios::end);//表示输入流的结束位置
    length = ifile.tellg();//返回当前定位指针的位置,也代表着输入流的大小。
    ifile.seekg(0 ios::beg);//表示输入流的开始位置
}

void picture::Encode() {
    char *str;
    //请输入想要写入隐藏信息的图片的完整路径及名称,后缀为“.jpg“
    cout << “请输入要被隐藏信息的图片名(需要加后缀名):“ << endl;
    cin >> this->name_ifile_picture;//获取输入图片文件名称
    Open(this->ifile_picture this->name_ifile_picture this->length_ifile_picture);
    str = new char[length_ifile_picture + 5];
    this->ifile_picture.read(str this->length_ifile_picture);
    while (1) {
        if (str[this->length_ifile_picture - 2] == -1 && str[this->length_ifile_picture - 1] == -39)
            break;   //判断是否到达图像结束标志  FF D9
        else
            this->length_ifile_picture--;
    }
    //请输入成功写入隐藏信息后生成的新图片的完整保存路径及名称,后缀为“.jpg“
    cout << “请指定隐藏信息后的图片名(需要加后缀名):“ << endl;
    cin >> this->name_ofile_picture;
    this->ofile_picture.open(this->name_ofile_picture ios::binary | ios::out);
    if (!this->ofile_picture) {
        cout << “Open “ << this->name_ofile_picture << “ failed!“ << endl;
        return;
    }
    this->ofile_picture.write(str this->length_ifile_picture);
    this->ifile_picture.close();
    delete[]str;
    //输入带有隐藏信息的文本的完整路径及名称,后缀为“.txt“
    cout << “请输入要隐藏的信息文本名(需要加后缀名):“ << endl;
    cin >> this->name_ifile_txt;
    Open(this->ifile_txt this->name_ifile_txt this->length_ifile_txt);
    str = new char[length_ifile_txt + 5];
    this->ifile_txt.read(str this->length_ifile_txt);
    this->ofile_picture.write(str this->length_ifile_txt);
    this->ifile_txt.close();
    this->ofile_picture.close();
    delete[]str;
    cout << “隐藏成功!“ << endl;
}

void picture::Decode()        //信息提取
{
    char *str;
    //请输入带有隐藏信息的图片的完整保存路径及名称,后缀为“.jpg“
    cout << “请输入带有隐藏信息的图片名(需要加后缀名):“ << endl;
    cin >> this->name_ifile_picture;//获取输入图片文件名称
    Open(this->ifile_picture this->name_ifile_picture this->length_ifile_picture);
    str = new char[length_ifile_picture + 5];
    this->ifile_picture.read(str this->length_ifile_picture);
    int l = this->length_ifile_picture;
    while (1) {
        if (str[l - 2] == -1 && str[l - 1] == -39)
            break;   //图像结束标志  FF D9
        else
            l--;
    }
    //输入提取信息后信息的保存文本的完整路径及名称,后缀为“.txt“
    cout << “请输入信息提取

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-11-12 09:53  JEPG_Project\
     目录           0  2019-11-12 09:37  JEPG_Project\cmake-build-debug\
     文件         125  2019-11-12 09:12  JEPG_Project\CMakeLists.txt
     文件        6148  2019-11-12 09:53  JEPG_Project\.DS_Store
     文件         120  2019-11-12 09:53  __MACOSX\JEPG_Project\._.DS_Store
     文件        4623  2019-11-12 09:53  JEPG_Project\main.cpp
     目录           0  2019-11-12 09:53  JEPG_Project\.idea\
     文件        6148  2019-11-12 09:25  JEPG_Project\cmake-build-debug\.DS_Store
     文件         120  2019-11-12 09:25  __MACOSX\JEPG_Project\cmake-build-debug\._.DS_Store
     目录           0  2019-11-12 09:37  JEPG_Project\cmake-build-debug\CMakeFiles\
     文件        5173  2019-11-12 09:26  JEPG_Project\cmake-build-debug\Makefile
     文件        5952  2019-11-12 09:26  JEPG_Project\cmake-build-debug\JEPG_Project.cbp
     文件        1432  2019-11-12 09:26  JEPG_Project\cmake-build-debug\cmake_install.cmake
     文件          29  2019-11-12 09:30  JEPG_Project\cmake-build-debug\hidden_mesg.txt
     文件       81220  2019-11-12 09:28  JEPG_Project\cmake-build-debug\JEPG_Project
     文件       42433  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeCache.txt
     文件       93682  2018-12-25 08:58  JEPG_Project\cmake-build-debug\source.jpg
     文件       27812  2019-10-07 06:24  JEPG_Project\cmake-build-debug\dlam.jpg
     文件         233  2019-10-07 06:24  __MACOSX\JEPG_Project\cmake-build-debug\._dlam.jpg
     文件        4524  2019-11-12 09:53  JEPG_Project\.idea\workspace.xml
     文件         276  2019-11-12 09:12  JEPG_Project\.idea\modules.xml
     文件          97  2019-11-12 09:12  JEPG_Project\.idea\JEPG_Project.iml
     文件         240  2019-11-12 09:12  JEPG_Project\.idea\misc.xml
     文件          85  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\cmake.check_cache
     目录           0  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\3.15.3\
     文件       28430  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\CMakeOutput.log
     目录           0  2019-11-12 09:28  JEPG_Project\cmake-build-debug\CMakeFiles\JEPG_Project.dir\
     文件       11134  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\Makefile.cmake
     目录           0  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\CMakeTmp\
     文件           2  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\progress.marks
     文件         293  2019-11-12 09:26  JEPG_Project\cmake-build-debug\CMakeFiles\TargetDirectories.txt
............此处省略27个文件信息

评论

共有 条评论

相关资源