Skip to content
久久日记本
曾经年少爱追梦,一心只想往前飞
  • 首页
  • 博客
    • 博客历史
    • 主题
    • 个人文集
  • 关于
    • 正在读的书
    • 作品归档
    • 2018作品归档
    • 联系我
  • 友情链接
  • 留言板
❄
❅
❆
❄
❅
❆
❄
❅
❆
❄
.NET

找回压缩包密码

Posted on 2017年10月26日 by 九九 / 1953 Views

偶然间清理笔记本,发现了多年前的照片,然而是两个压缩包,重要的是,压缩包设置有密码,试了大约十分钟,崩溃,并不记得密码。

压缩有两个,一个zip,个rar。

网上找了找,zip的解决方案蛮多的,而解压rar并没有。

想了想,似乎可以调用7z来解决rar的问题。

用C#调用命令行才执行批量密码解压,不过似乎没法很友好的检查出那个密码对错并break,只能进行解压。

google了一下,发现了sevenzipsharp这个,看了看文档,参照着写了一下解压代码。调用装的最新版7z的dll报Can not load 7-zip library or internal COM error! Message: DLL file does not exist.错误,从sevenzipsharp下了9.15版本,这才正常。

/// <summary>
/// check zip or rar password by file path
/// </summary>
/// <param name="path"></param>
/// <param name="password"></param>
/// <returns></returns>
public bool CheckRARByPath(string path, string password)
{
    SevenZipBase.SetLibraryPath(@"7z.dll");
    using (SevenZipExtractor extractor = new SevenZipExtractor(path, password))
    {
        if (extractor.Check())
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

这样的坏处是每次都要传入path一下,猜想如果是大文件岂不是很惨,SevenZipExtractor有个stream参数,用FileStream读一下再转一下:

FileStream fs = new FileStream(@"test.rar", FileMode.Open);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Stream stream = new MemoryStream(bytes);

这样测试下来,大文件超出了内存^_^……

既然是找回密码,就不做那么复杂了,这时候发现我的数学真是着急,组合数组干脆就用for来循环了。

很顺利,rar跑了不到1分钟,zip跑了10分钟找回了密码。

送上源码:demo

参考资料:

使用SevenZipSharp压缩、解压文件

提高sevenzipsharp 检查密码的速度(1)

SevenZipSharp 0.64

github上的仓库: SevenZipSharp in github

codeplex似乎要关站了,备份了一下文档和库:

7zDLLs.7z

SevenZipSharp.dll

SevenZipSharpHelp.7z

C#, 文件操作
九九
过去的我们,现在的自己,往事,终会随风而逝。 View all posts by 九九 →

Post navigation

Older post
react-native-fs中的路径
Newer post
使用Spring MVC创建Restful API

标签云

2019ncov Android ASP.NET C# C/C++ CSS Div DX11 flask front-end GAE Git Java JJProject JS Life MSSQL MVC OpenSource Oracle Python React React-Native Software Tools Vue Webpack Website Window WP7 乱记 十年旧梦 天气 宝宝成长日记 小说 工作 情感 故障 散文 日记 游戏开发 网新实训笔记 花落梧桐 诗间集 转载

时光机

  • 2022年12月
  • 2022年4月
  • 2022年3月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年5月
  • 2019年12月
  • 2019年10月
  • 2019年9月
  • 2019年6月
  • 2019年5月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年7月
  • 2017年3月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年7月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年7月
  • 2015年4月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月
  • 2013年7月
  • 2013年6月
  • 2013年5月
  • 2013年4月
  • 2013年3月
  • 2013年1月
  • 2012年11月
  • 2012年10月
  • 2012年9月
  • 2012年8月
  • 2012年7月
  • 2012年6月
  • 2012年5月
  • 2012年4月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年12月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2011年8月
  • 2011年6月
  • 2011年5月
  • 2011年4月
  • 2011年3月
  • 2011年2月
  • 2010年12月
  • 2010年11月
  • 2010年10月
  • 2010年9月
  • 2010年8月
  • 2010年6月
  • 2010年5月
  • 2010年2月
  • 2010年1月
  • 2009年12月
  • 2009年11月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2009年5月
  • 2009年4月
  • 2009年3月
  • 2009年2月
  • 2009年1月
  • 2008年8月
  • 2008年6月
  • 2008年5月
  • 2008年4月
  • 2008年2月
  • 2007年11月
  • 2007年8月
  • 2007年6月
  • 2007年5月
  • 2007年4月
  • 2007年3月
  • 2007年2月
  • 2007年1月
  • 2006年10月
  • 2006年8月
© 2006 - 2023 久久日记本
Powered by WordPress | Theme: Graphy for 99diary