首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用7 Hashing c#散列解压缩文件

用7 Hashing c#散列解压缩文件
EN

Stack Overflow用户
提问于 2018-08-03 12:08:37
回答 1查看 465关注 0票数 0

我正在使用7zSDK压缩和解压缩文件。我想在压缩文件之前读取它,生成一个sha256散列,在文件上写入并压缩它。

解压缩时,我将读取哈希,将其存储在一个变量中,解压缩文件,并获得一个新的哈希来与存储在变量中的哈希进行比较,以检查文件的完整性。

在压缩文件时,我包括了这个块:

代码语言:javascript
复制
            //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);

在解压缩文件时,我会这样做:

代码语言:javascript
复制
            //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中得到一个*未处理的异常,没有它们,程序运行得很好。

我就是这样生成哈希的:

代码语言:javascript
复制
public static byte[] generateSHA256Hash(Stream fileSource)
{
    SHA256 fileHashed = SHA256Managed.Create();
    return fileHashed.ComputeHash(fileSource);
}

有人知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 13:10:30

在编写文件之前,将指针移动到文件的起始位置,解决了我的问题:

代码语言:javascript
复制
 input.Seek(0, SeekOrigin.Begin);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51672320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档