广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Qt实现解压带有密码的加密文件
  • 236
分享到

Qt实现解压带有密码的加密文件

2024-04-02 19:04:59 236人浏览 泡泡鱼
摘要

目录1.指定zip压缩包状态2.创建解压文件3.获取实际的压缩数量4.遍历方式创建解压缩文件4.1设置解压文件的参数4.2以读的方式打开加密文件4.3获取当前文件的所有内容4.4创建

上一章节中介绍了如何使用Qt编译quazip库以及对文件加解密的简单应用,那么,今天我们继续深挖关于解密操作的功能吧!

简单的解密一个压缩包,可以使用#include "JlCompress.h"中的函数进行静态操作。如果你只是需要简单的应用那么,这个文件中的功能就基本可以满足了。

在我们开发过程中,为了资料的保密性期间,一般情况下都会对压缩包进行加密,那么我们还要使用静态函数的方式进行解密那就不支持了。那么,我们该如何解密带有密码的加密文件呢?

这也是当前文章中的重点啦!

根据官网上给出的结果,一般我们会采取QuaZipFile类来进行非静态的解密方式,该方式也支持了带有密码的压缩包文件。

接下来我来具体讲述该如何实现带有密码的压缩包解密方法吧!

开发环境:VS2017 + Qt5.14.2 x64 win10系统

1.指定zip压缩包状态

在我们操作压缩包的时候,首先要做的就是指明当前是需要压缩还是解压缩文件。

当前,我们实现的功能是解压缩文件,代码实现

QuaZip zip(qsZipFiles);
zip.open(QuaZip::mdUnzip); //解压模式打开

打开Zip文件的方式有以下几种

枚举说明
QuaZip::mdNotOpenZIP文件没有打开。这是初始模式
QuaZip::mdUnzipZIP文件打开以读取里面的文件
QuaZip::mdCreateZIP文件是通过open()调用创建的
QuaZip::mdAppend以追加方式打开ZIP文件
QuaZip::mdAddZIP文件被打开,用于在存档中添加文件

2.创建解压文件

当我们成功打开压缩文件后的第一步需要创建解压文件,否则解压的文件无法存储。

QString dstPath = qsUnzipFiles;
if (!dstPath.endsWith("/") && !dstPath.endsWith("\\"))
{
	dstPath += "/";
}

QDir dir(qsUnzipFiles);
if (!dir.exists())
{
	dir.mkpath(qsUnzipFiles);
}

3.获取实际的压缩数量

int nCount = zip.getEntriesCount(); //压缩实体数量

4.遍历方式创建解压缩文件

这也是解压缩文件的重点了。

QuaZip::GoToFirstFile:将当前文件设置为存档中的第一个文件

QuaZip::goToNextFile:将当前文件设置为存档中的下一个文件

以for循环遍历的方式进行查询,在这里与之前的for循环不同的是以上两个函数的返回值都是bool值,这里我们也需要遍历bool值

for (bool suc = zip.goToFirstFile(); suc; suc = zip.goToNextFile())
{
    //实际的文件处理
}

这个文件查找方式是如何操作的呢?

在实际运行过程中,goToFirstFile函数会从当前文件夹中的第一个文件夹进行遍历,一直遍历到该文件夹下面没有子文件为止。然后才会访问第二个文件夹。

在for循环中的实际处理是如何呢?

4.1设置解压文件的参数

1:设置压缩包的名称

QuaZipFile zipFile;
QString qsTempZipName = zip.getZipName();
zipFile.setZipName(qsTempZipName);

2:设置当前需要解压的文件

QString filename = zip.getCurrentFileName();
zipFile.setFileName(filename);

代码解析:获取当前正在访问的文件夹,并设置需要读取的文件夹名称

4.2以读的方式打开加密文件

bool bOpen = zipFile.open(QioDevice::ReadOnly, chPassWord);
if(bOpen == false)
    return false;

代码解析:只有在返回值bOpen是true的情况下才代表了读取成功。

如果返回值是false,在路径没有问题的情况下,基本上是密码错误。

注意!!!

在这里需要强烈注意的一点是:输入的密码一定是const char*类型,否则返回值一直是false。这个坑真的是让我特别无语!

4.3获取当前文件的所有内容

QByteArray data = zipFile.readAll();
zipFile.close();

使用readAll的方式读取文件,这个方法就不再过多说明了,很简单,一定要记得,读取文件之后一定要关闭文件!

4.4创建解压缩后的同名文件

if (filename.endsWith("/"))
{
	dir.mkpath(filename);
}
else
{
	dstFile.setFileName(dstPath + filename);
	if (!dstFile.open(QIODevice::WriteOnly))
	{
		return false;
	}
	dstFile.write(data);
	dstFile.close();

}

5.关闭zip压缩包

zip.close();

这个操作是一定要有的!

到这里,带有密码的压缩包就可以解压出来了!

到此这篇关于Qt实现解压带有密码的加密文件的文章就介绍到这了,更多相关Qt解压加密文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Qt实现解压带有密码的加密文件

本文链接: https://www.lsjlt.com/news/138620.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Qt实现解压带有密码的加密文件
    目录1.指定zip压缩包状态2.创建解压文件3.获取实际的压缩数量4.遍历方式创建解压缩文件4.1设置解压文件的参数4.2以读的方式打开加密文件4.3获取当前文件的所有内容4.4创建...
    99+
    2022-11-13
  • Java对zip,rar,7z文件带密码解压实例详解
    目录前言实现代码1、pom.xml2、zip解压3、rar解压4、7z解压5、解压统一入口封装6、测试代码补充前言 在一些日常业务中,会遇到一些琐碎文件需要统一打包到一个压缩包中上传...
    99+
    2022-11-13
  • Java怎么对zip,rar,7z文件带密码解压
    这篇文章主要讲解了“Java怎么对zip,rar,7z文件带密码解压”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么对zip,rar,7z文件带密码解压”吧!前言在一些日常业务中,...
    99+
    2023-07-02
  • Java IO--实现文件的加密解密
    我们知道文件存储的方式在计算机当中是以字节的方式进行存储的,可以通过对文件字节的操作来实现文件的加密。下面的例子是通过读取文件的字节,然后使字节中的每一位取反(1变0,0变1),再进行倒置,来实现加解密过程。import java...
    99+
    2021-03-16
  • Java实现Excel文件加密解密的示例代码
    目录概述示例大纲工具Java代码示例示例1加密工作簿示例2解密工作簿示例3加密工作表示例4加密工作表指定数据范围示例5设置工作表公式隐藏示例6解密Excel工作表概述 设置excel...
    99+
    2022-11-13
  • python 破解加密zip文件的密码
    目录今天的文章来自 盏茶作酒 同学。他在老电脑中发现了一个加密的 zip 文件,于是用 Python 破解了文件密码。在破解的过程中出现了内存爆炸的问题,通过阅读 Python 源代...
    99+
    2022-11-12
  • android中对文件加密解密的实现
    现在项目里面有一个需求,本项目里面下载的视频和文档都不允许通过其他的播放器播放,在培训机构里面这样的需求很多。防止有人交一份钱,把所有的课件就拷给了别人。这样的事情培训机构肯定...
    99+
    2022-06-06
    加密 加密解密 Android
  • python密码学实现文件加密教程
    目录代码输出说明在Python中,可以在传输到通信通道之前加密和解密文件.为此,您必须使用插件 PyCrypto .您可以使用下面给出的命令安装此插件. pip ...
    99+
    2022-11-11
  • Springboot实现对配置文件中的明文密码加密详解
    目录前言示例展示原理解析工具介绍实现自定义加解密如何生成密文前言 我们在SpringBoot项目当中,会把数据库的用户名密码等配置直接放在yaml或者properties文件中,这样...
    99+
    2023-03-10
    Springboot配置文件明文密码加密 Springboot明文密码加密 Springboot加密
  • python密码加密与解密的实现
    目录一、对称加密1.1 安装第三方库 - PyCrypto1.2 加密实现二、非对称加密三、摘要算法3.1 md5加密3.2 sha1加密3.3 sha256加密3.4 sha384...
    99+
    2023-02-07
    python 密码加密 python 密码解密
  • 怎么破解加密zip文件的密码
    本篇内容主要讲解“怎么破解加密zip文件的密码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么破解加密zip文件的密码”吧!之前在家里的老电脑中,发现一个加密zip压缩包,由于时隔太久忘记密码...
    99+
    2023-06-15
  • java怎么实现rsa加密解密文件
    要在Java中实现RSA加密和解密文件,可以使用Java Cryptography Architecture(JCA)提供的RSA算...
    99+
    2023-10-26
    java
  • Java如何实现Excel文件加密解密
    本文小编为大家详细介绍“Java如何实现Excel文件加密解密”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java如何实现Excel文件加密解密”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。概述设置excel...
    99+
    2023-06-30
  • Springboot实现对配置文件中的明文密码加密
    前言 我们在SpringBoot项目当中,会把数据库的用户名密码等配置直接放在yaml或者properties文件中,这样维护数据库的密码等敏感信息显然是有一定风险的,如果相关的配置文件被有心之人拿到,必然会给项目造成一定的安全风险;所以为...
    99+
    2023-09-09
    spring boot mysql spring
  • SpringBoot配置文件中密码属性加密的实现
    目录背景集成jasypt-spring-boot到项目中配置文件配置加密与读取工作原理简析使用自定义的加密算法结语本文主要介绍了SpringBoot配置文件中的明文密码如何加密保存,...
    99+
    2022-11-13
  • Java实现文件的加密解密功能示例
    本文实例讲述了Java实现文件的加密解密功能分享给大家供大家参考,具体如下:package com.copy.encrypt;import java.io.File;import java.io.FileInputStream;import...
    99+
    2023-05-31
    java 文件 加密
  • python密码学文件解密实现教程
    目录代码输出在本章中,我们将讨论使用Python解密加密文件.请注意,对于解密过程,我们将遵循相同的过程,但不是指定输出路径,而是关注输入路径或加密的必要文件. 代码 以下是使用Py...
    99+
    2022-11-11
  • Python编程密码学文件加密与解密的方法
    本文小编为大家详细介绍“Python编程密码学文件加密与解密的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python编程密码学文件加密与解密的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本章要点o...
    99+
    2023-06-30
  • Python压缩解压缩zip文件及破解zip文件密码的方法
    python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。 例如,在py脚本所在目录中,有如下文件: readability/readability.js readability...
    99+
    2022-06-04
    文件 解压缩 密码
  • android使用AES加密和解密文件实例代码
    前言最近公司需要对本公司的一些下载文件进行加密解密需求,也就尝试去实现下,其实需要借助第三方的jar包:bcprov-jdk15on-155.jar,下载这个可以到网上搜或者下载本人的demo即可,注意:需要加密和解密的key是一致的才可以...
    99+
    2023-05-31
    android aes 加密
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作