Do not modify CRC on return, so several calls for return will return same value.

This commit is contained in:
2018-01-17 23:36:02 +00:00
parent db4ddcc666
commit 4311ca59d3
3 changed files with 15 additions and 15 deletions

View File

@@ -89,9 +89,8 @@ namespace DiscImageChef.Checksums
/// </summary>
public byte[] Final()
{
hashInt ^= CRC64_SEED;
BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian;
return BigEndianBitConverter.GetBytes(hashInt);
return BigEndianBitConverter.GetBytes(hashInt ^= CRC64_SEED);
}
/// <summary>
@@ -99,12 +98,11 @@ namespace DiscImageChef.Checksums
/// </summary>
public string End()
{
hashInt ^= CRC64_SEED;
StringBuilder crc64Output = new StringBuilder();
BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian;
for(int i = 0; i < BigEndianBitConverter.GetBytes(hashInt).Length; i++)
crc64Output.Append(BigEndianBitConverter.GetBytes(hashInt)[i].ToString("x2"));
for(int i = 0; i < BigEndianBitConverter.GetBytes(hashInt ^= CRC64_SEED).Length; i++)
crc64Output.Append(BigEndianBitConverter.GetBytes(hashInt ^= CRC64_SEED)[i].ToString("x2"));
return crc64Output.ToString();
}