diff --git a/Adler32Context.cs b/Adler32Context.cs index 418db2d2a..a0c4c2364 100644 --- a/Adler32Context.cs +++ b/Adler32Context.cs @@ -36,6 +36,9 @@ using System.Text; namespace DiscImageChef.Checksums { + /// + /// Implements the Adler-32 algorithm + /// public class Adler32Context { ushort sum1, sum2; diff --git a/CDChecksums.cs b/CDChecksums.cs index 7b963dc05..45478af21 100644 --- a/CDChecksums.cs +++ b/CDChecksums.cs @@ -37,6 +37,9 @@ using DiscImageChef.Console; namespace DiscImageChef.Checksums { + /// + /// Implements ReedSolomon and CRC32 algorithms as used by CD-ROM + /// public static class CdChecksums { static byte[] eccFTable; diff --git a/CRC16Context.cs b/CRC16Context.cs index ecd9bd4da..389ef624e 100644 --- a/CRC16Context.cs +++ b/CRC16Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to calculate CRC16. + /// Implements a CRC16-CCITT algorithm /// public class Crc16Context { diff --git a/CRC32Context.cs b/CRC32Context.cs index 7ad121d70..26b543962 100644 --- a/CRC32Context.cs +++ b/CRC32Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to calculate CRC32. + /// Implements a CRC32 algorithm /// public class Crc32Context { diff --git a/CRC64Context.cs b/CRC64Context.cs index 7a26a6518..2294e5ca4 100644 --- a/CRC64Context.cs +++ b/CRC64Context.cs @@ -36,7 +36,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to calculate CRC64 (ECMA). + /// Implements a CRC64 (ECMA) algorithm /// public class Crc64Context { diff --git a/FletcherContext.cs b/FletcherContext.cs index 13982c8ae..da63771f8 100644 --- a/FletcherContext.cs +++ b/FletcherContext.cs @@ -40,12 +40,12 @@ namespace DiscImageChef.Checksums { public class Fletcher32Context { - UInt16 sum1, sum2; - byte oddValue; bool inodd; + byte oddValue; + ushort sum1, sum2; /// - /// Initializes the Fletcher32 sums + /// Initializes the Fletcher32 sums /// public void Init() { @@ -56,16 +56,14 @@ namespace DiscImageChef.Checksums } /// - /// Updates the hash with data. + /// Updates the hash with data. /// /// Data buffer. /// Length of buffer to hash. public void Update(byte[] data, uint len) { - UInt16 block; + ushort block; if(!inodd) - { - // Odd size if(len % 2 != 0) { oddValue = data[len - 1]; @@ -74,8 +72,8 @@ namespace DiscImageChef.Checksums for(int i = 0; i < len - 1; i += 2) { block = BigEndianBitConverter.ToUInt16(data, i); - sum1 = (UInt16)((sum1 + block) % 0xFFFF); - sum2 = (UInt16)((sum2 + sum1) % 0xFFFF); + sum1 = (ushort)((sum1 + block) % 0xFFFF); + sum2 = (ushort)((sum2 + sum1) % 0xFFFF); } } else @@ -84,11 +82,10 @@ namespace DiscImageChef.Checksums for(int i = 0; i < len; i += 2) { block = BigEndianBitConverter.ToUInt16(data, i); - sum1 = (UInt16)((sum1 + block) % 0xFFFF); - sum2 = (UInt16)((sum2 + sum1) % 0xFFFF); + sum1 = (ushort)((sum1 + block) % 0xFFFF); + sum2 = (ushort)((sum2 + sum1) % 0xFFFF); } } - } // Carrying odd else { @@ -97,8 +94,8 @@ namespace DiscImageChef.Checksums oddData[1] = data[0]; block = BigEndianBitConverter.ToUInt16(oddData, 0); - sum1 = (UInt16)((sum1 + block) % 0xFFFF); - sum2 = (UInt16)((sum2 + sum1) % 0xFFFF); + sum1 = (ushort)((sum1 + block) % 0xFFFF); + sum2 = (ushort)((sum2 + sum1) % 0xFFFF); // Even size, carrying odd if(len % 2 == 0) @@ -109,8 +106,8 @@ namespace DiscImageChef.Checksums for(int i = 1; i < len - 1; i += 2) { block = BigEndianBitConverter.ToUInt16(data, i); - sum1 = (UInt16)((sum1 + block) % 0xFFFF); - sum2 = (UInt16)((sum2 + sum1) % 0xFFFF); + sum1 = (ushort)((sum1 + block) % 0xFFFF); + sum2 = (ushort)((sum2 + sum1) % 0xFFFF); } } else @@ -119,15 +116,15 @@ namespace DiscImageChef.Checksums for(int i = 1; i < len; i += 2) { block = BigEndianBitConverter.ToUInt16(data, i); - sum1 = (UInt16)((sum1 + block) % 0xFFFF); - sum2 = (UInt16)((sum2 + sum1) % 0xFFFF); + sum1 = (ushort)((sum1 + block) % 0xFFFF); + sum2 = (ushort)((sum2 + sum1) % 0xFFFF); } } } } /// - /// Updates the hash with data. + /// Updates the hash with data. /// /// Data buffer. public void Update(byte[] data) @@ -136,68 +133,62 @@ namespace DiscImageChef.Checksums } /// - /// Returns a byte array of the hash value. + /// Returns a byte array of the hash value. /// public byte[] Final() { - UInt32 finalSum = (UInt32)(sum1 + (sum2 << 16)); + uint finalSum = (uint)(sum1 + (sum2 << 16)); return BigEndianBitConverter.GetBytes(finalSum); } /// - /// Returns a hexadecimal representation of the hash value. + /// Returns a hexadecimal representation of the hash value. /// public string End() { - UInt32 finalSum = (UInt32)(sum1 + (sum2 << 16)); + uint finalSum = (uint)(sum1 + (sum2 << 16)); StringBuilder fletcherOutput = new StringBuilder(); for(int i = 0; i < BigEndianBitConverter.GetBytes(finalSum).Length; i++) - { fletcherOutput.Append(BigEndianBitConverter.GetBytes(finalSum)[i].ToString("x2")); - } return fletcherOutput.ToString(); } /// - /// Gets the hash of a file + /// Gets the hash of a file /// /// File path. public static byte[] File(string filename) { - byte[] hash; - File(filename, out hash); + File(filename, out byte[] hash); return hash; } /// - /// Gets the hash of a file in hexadecimal and as a byte array. + /// Gets the hash of a file in hexadecimal and as a byte array. /// /// File path. /// Byte array of the hash value. public static string File(string filename, out byte[] hash) { FileStream fileStream = new FileStream(filename, FileMode.Open); - UInt16 localSum1, localSum2, block; - UInt32 finalSum; + ushort localSum1, localSum2, block; + uint finalSum; byte[] blockBytes; localSum1 = 0xFFFF; localSum2 = 0xFFFF; - block = 0; if(fileStream.Length % 2 == 0) - { for(int i = 0; i < fileStream.Length; i += 2) { blockBytes = new byte[2]; fileStream.Read(blockBytes, 0, 2); block = BigEndianBitConverter.ToUInt16(blockBytes, 0); - localSum1 = (UInt16)((localSum1 + block) % 0xFFFF); - localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF); + localSum1 = (ushort)((localSum1 + block) % 0xFFFF); + localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF); } - } else { for(int i = 0; i < fileStream.Length - 1; i += 2) @@ -205,8 +196,8 @@ namespace DiscImageChef.Checksums blockBytes = new byte[2]; fileStream.Read(blockBytes, 0, 2); block = BigEndianBitConverter.ToUInt16(blockBytes, 0); - localSum1 = (UInt16)((localSum1 + block) % 0xFFFF); - localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF); + localSum1 = (ushort)((localSum1 + block) % 0xFFFF); + localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF); } byte[] oddData = new byte[2]; @@ -214,55 +205,49 @@ namespace DiscImageChef.Checksums oddData[1] = 0; block = BigEndianBitConverter.ToUInt16(oddData, 0); - localSum1 = (UInt16)((localSum1 + block) % 0xFFFF); - localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF); + localSum1 = (ushort)((localSum1 + block) % 0xFFFF); + localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF); } - finalSum = (UInt32)(localSum1 + (localSum2 << 16)); + finalSum = (uint)(localSum1 + (localSum2 << 16)); hash = BitConverter.GetBytes(finalSum); StringBuilder fletcherOutput = new StringBuilder(); - for(int i = 0; i < hash.Length; i++) - { - fletcherOutput.Append(hash[i].ToString("x2")); - } + foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2")); return fletcherOutput.ToString(); } /// - /// Gets the hash of the specified data buffer. + /// Gets the hash of the specified data buffer. /// /// Data buffer. /// Length of the data buffer to hash. /// Byte array of the hash value. public static string Data(byte[] data, uint len, out byte[] hash) { - UInt16 localSum1, localSum2, block; - UInt32 finalSum; + ushort localSum1, localSum2, block; + uint finalSum; localSum1 = 0xFFFF; localSum2 = 0xFFFF; - block = 0; if(len % 2 == 0) - { for(int i = 0; i < len; i += 2) { block = BigEndianBitConverter.ToUInt16(data, i); - localSum1 = (UInt16)((localSum1 + block) % 0xFFFF); - localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF); + localSum1 = (ushort)((localSum1 + block) % 0xFFFF); + localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF); } - } else { for(int i = 0; i < len - 1; i += 2) { block = BigEndianBitConverter.ToUInt16(data, i); - localSum1 = (UInt16)((localSum1 + block) % 0xFFFF); - localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF); + localSum1 = (ushort)((localSum1 + block) % 0xFFFF); + localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF); } byte[] oddData = new byte[2]; @@ -270,26 +255,23 @@ namespace DiscImageChef.Checksums oddData[1] = 0; block = BigEndianBitConverter.ToUInt16(oddData, 0); - localSum1 = (UInt16)((localSum1 + block) % 0xFFFF); - localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF); + localSum1 = (ushort)((localSum1 + block) % 0xFFFF); + localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF); } - finalSum = (UInt32)(localSum1 + (localSum2 << 16)); + finalSum = (uint)(localSum1 + (localSum2 << 16)); hash = BitConverter.GetBytes(finalSum); StringBuilder fletcherOutput = new StringBuilder(); - for(int i = 0; i < hash.Length; i++) - { - fletcherOutput.Append(hash[i].ToString("x2")); - } + foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2")); return fletcherOutput.ToString(); } /// - /// Gets the hash of the specified data buffer. + /// Gets the hash of the specified data buffer. /// /// Data buffer. /// Byte array of the hash value. @@ -304,7 +286,7 @@ namespace DiscImageChef.Checksums byte sum1, sum2; /// - /// Initializes the Fletcher16 sums + /// Initializes the Fletcher16 sums /// public void Init() { @@ -313,7 +295,7 @@ namespace DiscImageChef.Checksums } /// - /// Updates the hash with data. + /// Updates the hash with data. /// /// Data buffer. /// Length of buffer to hash. @@ -327,7 +309,7 @@ namespace DiscImageChef.Checksums } /// - /// Updates the hash with data. + /// Updates the hash with data. /// /// Data buffer. public void Update(byte[] data) @@ -336,43 +318,40 @@ namespace DiscImageChef.Checksums } /// - /// Returns a byte array of the hash value. + /// Returns a byte array of the hash value. /// public byte[] Final() { - UInt16 finalSum = (UInt16)(sum1 + (sum2 << 8)); + ushort finalSum = (ushort)(sum1 + (sum2 << 8)); return BigEndianBitConverter.GetBytes(finalSum); } /// - /// Returns a hexadecimal representation of the hash value. + /// Returns a hexadecimal representation of the hash value. /// public string End() { - UInt16 finalSum = (UInt16)(sum1 + (sum2 << 8)); + ushort finalSum = (ushort)(sum1 + (sum2 << 8)); StringBuilder fletcherOutput = new StringBuilder(); for(int i = 0; i < BigEndianBitConverter.GetBytes(finalSum).Length; i++) - { fletcherOutput.Append(BigEndianBitConverter.GetBytes(finalSum)[i].ToString("x2")); - } return fletcherOutput.ToString(); } /// - /// Gets the hash of a file + /// Gets the hash of a file /// /// File path. public static byte[] File(string filename) { - byte[] hash; - File(filename, out hash); + File(filename, out byte[] hash); return hash; } /// - /// Gets the hash of a file in hexadecimal and as a byte array. + /// Gets the hash of a file in hexadecimal and as a byte array. /// /// File path. /// Byte array of the hash value. @@ -380,11 +359,10 @@ namespace DiscImageChef.Checksums { FileStream fileStream = new FileStream(filename, FileMode.Open); byte localSum1, localSum2, block; - UInt16 finalSum; + ushort finalSum; localSum1 = 0xFF; localSum2 = 0xFF; - block = 0; for(int i = 0; i < fileStream.Length; i += 2) { @@ -393,22 +371,19 @@ namespace DiscImageChef.Checksums localSum2 = (byte)((localSum2 + localSum1) % 0xFF); } - finalSum = (UInt16)(localSum1 + (localSum2 << 8)); + finalSum = (ushort)(localSum1 + (localSum2 << 8)); hash = BitConverter.GetBytes(finalSum); StringBuilder fletcherOutput = new StringBuilder(); - for(int i = 0; i < hash.Length; i++) - { - fletcherOutput.Append(hash[i].ToString("x2")); - } + foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2")); return fletcherOutput.ToString(); } /// - /// Gets the hash of the specified data buffer. + /// Gets the hash of the specified data buffer. /// /// Data buffer. /// Length of the data buffer to hash. @@ -416,7 +391,7 @@ namespace DiscImageChef.Checksums public static string Data(byte[] data, uint len, out byte[] hash) { byte localSum1, localSum2; - UInt16 finalSum; + ushort finalSum; localSum1 = 0xFF; localSum2 = 0xFF; @@ -427,22 +402,19 @@ namespace DiscImageChef.Checksums localSum2 = (byte)((localSum2 + localSum1) % 0xFF); } - finalSum = (UInt16)(localSum1 + (localSum2 << 8)); + finalSum = (ushort)(localSum1 + (localSum2 << 8)); hash = BitConverter.GetBytes(finalSum); StringBuilder fletcherOutput = new StringBuilder(); - for(int i = 0; i < hash.Length; i++) - { - fletcherOutput.Append(hash[i].ToString("x2")); - } + foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2")); return fletcherOutput.ToString(); } /// - /// Gets the hash of the specified data buffer. + /// Gets the hash of the specified data buffer. /// /// Data buffer. /// Byte array of the hash value. @@ -451,6 +423,4 @@ namespace DiscImageChef.Checksums return Data(data, (uint)data.Length, out hash); } } -} -*/ - +}*/ \ No newline at end of file diff --git a/MD5Context.cs b/MD5Context.cs index 81e08930b..c43aece59 100644 --- a/MD5Context.cs +++ b/MD5Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to .NET MD5. + /// Wraps up .NET MD5 implementation to a Init(), Update(), Final() context. /// public class Md5Context { diff --git a/RIPEMD160Context.cs b/RIPEMD160Context.cs index 6fe080832..ec246e9e0 100644 --- a/RIPEMD160Context.cs +++ b/RIPEMD160Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to .NET RIPEMD160. + /// Wraps up .NET RIPEMD160 implementation to a Init(), Update(), Final() context. /// public class Ripemd160Context { diff --git a/ReedSolomon.cs b/ReedSolomon.cs index 89b4b6e68..c93d0d98f 100644 --- a/ReedSolomon.cs +++ b/ReedSolomon.cs @@ -62,6 +62,9 @@ using DiscImageChef.Console; namespace DiscImageChef.Checksums { + /// + /// Implements the Reed-Solomon algorithm + /// public class ReedSolomon { /* Primitive polynomials - see Lin & Costello, Error Control Coding Appendix A, diff --git a/SHA1Context.cs b/SHA1Context.cs index 6f6544c6c..f8dcea1c3 100644 --- a/SHA1Context.cs +++ b/SHA1Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to .NET SHA1. + /// Wraps up .NET SHA1 implementation to a Init(), Update(), Final() context. /// public class Sha1Context { diff --git a/SHA256Context.cs b/SHA256Context.cs index a24531055..146c3801b 100644 --- a/SHA256Context.cs +++ b/SHA256Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to .NET SHA256. + /// Wraps up .NET SHA256 implementation to a Init(), Update(), Final() context. /// public class Sha256Context { diff --git a/SHA384Context.cs b/SHA384Context.cs index ee0cd3eb5..e2a21cf35 100644 --- a/SHA384Context.cs +++ b/SHA384Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to .NET SHA384. + /// Wraps up .NET SHA384 implementation to a Init(), Update(), Final() context. /// public class Sha384Context { diff --git a/SHA512Context.cs b/SHA512Context.cs index 2ad824ef6..dbaa42c75 100644 --- a/SHA512Context.cs +++ b/SHA512Context.cs @@ -37,7 +37,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to .NET SHA512. + /// Wraps up .NET SHA512 implementation to a Init(), Update(), Final() context. /// public class Sha512Context { diff --git a/SpamSumContext.cs b/SpamSumContext.cs index 72e5b4901..52030a622 100644 --- a/SpamSumContext.cs +++ b/SpamSumContext.cs @@ -45,7 +45,7 @@ using System.Text; namespace DiscImageChef.Checksums { /// - /// Provides a UNIX similar API to calculate Fuzzy Hash (SpamSum). + /// Implements the SpamSum fuzzy hashing algorithm. /// public class SpamSumContext {