为了账号安全,请及时绑定邮箱和手机立即绑定

使用 7zip sdk 散列解压缩和压缩文件 - c#

使用 7zip sdk 散列解压缩和压缩文件 - c#

C#
千巷猫影 2021-11-14 14:57:02
我正在使用 7z SDK 来压缩和解压缩文件。我想在压缩之前读取文件,生成一个 sha256 哈希,写入文件并压缩它。解压时,我会读取哈希值,将其存储在变量中,解压文件并获得新的哈希值与存储在变量中的哈希值进行比较,以检查文件的完整性。压缩文件时,我包含了这个块:            //Write the hash size from the original file            int HashCodeSize = Hash.generateSHA256Hash(input).Length;            byte[] hashSize = BitConverter.GetBytes(HashCodeSize);            output.Write(hashSize, 0, hashSize.Length);            //Write the hash from the original file            byte[] fileHashCode = new byte[8];            fileHashCode = Hash.generateSHA256Hash(input);            output.Write(fileHashCode, 0, fileHashCode.Length);解压缩文件时,我这样做:            //read the hash size from the original file            byte[] hashSize = new byte[4];            input.Read(hashSize, 0, 4);            int sizeOfHash = BitConverter.ToInt16(hashSize, 0);            //Read Hash            byte[] fileHash = new byte[sizeOfHash];            input.Read(fileHash, 0, 8);当我包含这两个块时,我从 SDK 中得到一个 *未处理的异常,没有它们块,程序运行良好。这就是我生成哈希的方式:public static byte[] generateSHA256Hash(Stream fileSource){    SHA256 fileHashed = SHA256Managed.Create();    return fileHashed.ComputeHash(fileSource);}有谁知道我做错了什么?
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

在写入文件之前将指针移动到文件的开头解决了我的问题:

 input.Seek(0, SeekOrigin.Begin);


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信