我正在使用 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 回答
- 0 关注
- 438 浏览
添加回答
举报
0/150
提交
取消