Я использую 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);
}
Кто-нибудь знает, что я делаю неправильно?
I get an unhandled exception
пожалуйста, добавьте сообщение и трассировку стека - person Renatas M.   schedule 03.08.2018output.Position = 0;
после записи. Или вы используете разные потоки для записи и сжатия? - person Renatas M.   schedule 03.08.2018