diff --git a/SharpHash/Checksums/Adler32Context.cs b/SharpHash/Checksums/Adler32Context.cs
index d34ff99..5b8c871 100644
--- a/SharpHash/Checksums/Adler32Context.cs
+++ b/SharpHash/Checksums/Adler32Context.cs
@@ -26,8 +26,8 @@ namespace SharpHash.Checksums
{
public class Adler32Context
{
- private UInt16 sum1, sum2;
- private const UInt16 AdlerModule = 65521;
+ UInt16 sum1, sum2;
+ const UInt16 AdlerModule = 65521;
///
/// Initializes the Adler-32 sums
@@ -134,7 +134,7 @@ namespace SharpHash.Checksums
/// Data buffer.
/// Length of the data buffer to hash.
/// Byte array of the hash value.
- public string Data(byte[] data, uint len, out byte[] hash)
+ public static string Data(byte[] data, uint len, out byte[] hash)
{
UInt16 localSum1, localSum2;
UInt32 finalSum;
@@ -167,7 +167,7 @@ namespace SharpHash.Checksums
///
/// Data buffer.
/// Byte array of the hash value.
- public string Data(byte[] data, out byte[] hash)
+ public static string Data(byte[] data, out byte[] hash)
{
return Data(data, (uint)data.Length, out hash);
}
diff --git a/SharpHash/Checksums/FletcherContext.cs b/SharpHash/Checksums/FletcherContext.cs
index 7181a75..97b91d7 100644
--- a/SharpHash/Checksums/FletcherContext.cs
+++ b/SharpHash/Checksums/FletcherContext.cs
@@ -26,9 +26,9 @@ namespace SharpHash.Checksums
{
public class Fletcher32Context
{
- private UInt16 sum1, sum2;
- private byte oddValue;
- private bool inodd;
+ UInt16 sum1, sum2;
+ byte oddValue;
+ bool inodd;
///
/// Initializes the Fletcher32 sums
@@ -175,7 +175,7 @@ namespace SharpHash.Checksums
if (fileStream.Length % 2 == 0)
{
- for (int i = 0; i < fileStream.Length; i+=2)
+ for (int i = 0; i < fileStream.Length; i += 2)
{
blockBytes = new byte[2];
fileStream.Read(blockBytes, 0, 2);
@@ -186,7 +186,7 @@ namespace SharpHash.Checksums
}
else
{
- for (int i = 0; i < fileStream.Length-1; i+=2)
+ for (int i = 0; i < fileStream.Length - 1; i += 2)
{
blockBytes = new byte[2];
fileStream.Read(blockBytes, 0, 2);
@@ -224,7 +224,7 @@ namespace SharpHash.Checksums
/// Data buffer.
/// Length of the data buffer to hash.
/// Byte array of the hash value.
- public string Data(byte[] data, uint len, out byte[] hash)
+ public static string Data(byte[] data, uint len, out byte[] hash)
{
UInt16 localSum1, localSum2, block;
UInt32 finalSum;
@@ -235,7 +235,7 @@ namespace SharpHash.Checksums
if (len % 2 == 0)
{
- for (int i = 0; i < len; i+=2)
+ for (int i = 0; i < len; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
@@ -244,7 +244,7 @@ namespace SharpHash.Checksums
}
else
{
- for (int i = 0; i < len-1; i+=2)
+ for (int i = 0; i < len - 1; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
@@ -279,7 +279,7 @@ namespace SharpHash.Checksums
///
/// Data buffer.
/// Byte array of the hash value.
- public string Data(byte[] data, out byte[] hash)
+ public static string Data(byte[] data, out byte[] hash)
{
return Data(data, (uint)data.Length, out hash);
}
@@ -287,7 +287,7 @@ namespace SharpHash.Checksums
public class Fletcher16Context
{
- private byte sum1, sum2;
+ byte sum1, sum2;
///
/// Initializes the Fletcher16 sums
@@ -372,7 +372,7 @@ namespace SharpHash.Checksums
localSum2 = 0xFF;
block = 0;
- for (int i = 0; i < fileStream.Length; i+=2)
+ for (int i = 0; i < fileStream.Length; i += 2)
{
block = (byte)fileStream.ReadByte();
localSum1 = (byte)((localSum1 + block) % 0xFF);
@@ -399,7 +399,7 @@ namespace SharpHash.Checksums
/// Data buffer.
/// Length of the data buffer to hash.
/// Byte array of the hash value.
- public string Data(byte[] data, uint len, out byte[] hash)
+ public static string Data(byte[] data, uint len, out byte[] hash)
{
byte localSum1, localSum2;
UInt16 finalSum;
@@ -432,7 +432,7 @@ namespace SharpHash.Checksums
///
/// Data buffer.
/// Byte array of the hash value.
- public string Data(byte[] data, out byte[] hash)
+ public static string Data(byte[] data, out byte[] hash)
{
return Data(data, (uint)data.Length, out hash);
}
diff --git a/SharpHash/Checksums/MD5Context.cs b/SharpHash/Checksums/MD5Context.cs
index 44a6f6c..b3bb979 100644
--- a/SharpHash/Checksums/MD5Context.cs
+++ b/SharpHash/Checksums/MD5Context.cs
@@ -73,7 +73,7 @@ namespace SharpHash.Checksums
///
public string End()
{
- _md5Provider.TransformFinalBlock(new byte[0], 0, 0);
+ _md5Provider.TransformFinalBlock(new byte[0], 0, 0);
StringBuilder md5Output = new StringBuilder();
for (int i = 0; i < _md5Provider.Hash.Length; i++)
diff --git a/SharpHash/Checksums/SHA3Context.cs b/SharpHash/Checksums/SHA3Context.cs
index 20fc84e..0faf324 100644
--- a/SharpHash/Checksums/SHA3Context.cs
+++ b/SharpHash/Checksums/SHA3Context.cs
@@ -37,7 +37,7 @@ namespace SharpHash.Checksums
///
public void Init()
{
- _sha3Provider = new SHA3Unmanaged(512);;
+ _sha3Provider = new SHA3Unmanaged(512);
}
///
diff --git a/SharpHash/Checksums/SpamSumContext.cs b/SharpHash/Checksums/SpamSumContext.cs
index 22c405f..1fc045c 100644
--- a/SharpHash/Checksums/SpamSumContext.cs
+++ b/SharpHash/Checksums/SpamSumContext.cs
@@ -45,18 +45,21 @@ namespace SharpHash.Checksums
const UInt32 SPAMSUM_LENGTH = 64;
const UInt32 FUZZY_MAX_RESULT = (2 * SPAMSUM_LENGTH + 20);
//"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- readonly byte[] b64 = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
- 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
- 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
- 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
- 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E,
- 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76,
- 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33,
- 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F};
+ readonly byte[] b64 =
+ {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
+ 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
+ 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
+ 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
+ 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E,
+ 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76,
+ 0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F
+ };
struct roll_state
{
- public byte[] window; // ROLLING_WINDOW
+ public byte[] window;
+ // ROLLING_WINDOW
public UInt32 h1;
public UInt32 h2;
public UInt32 h3;
@@ -72,7 +75,8 @@ namespace SharpHash.Checksums
{
public UInt32 h;
public UInt32 halfh;
- public byte[] digest; // SPAMSUM_LENGTH
+ public byte[] digest;
+ // SPAMSUM_LENGTH
public byte halfdigest;
public UInt32 dlen;
}
@@ -81,7 +85,8 @@ namespace SharpHash.Checksums
{
public UInt32 bhstart;
public UInt32 bhend;
- public blockhash_context[] bh; //NUM_BLOCKHASHES
+ public blockhash_context[] bh;
+ //NUM_BLOCKHASHES
public UInt64 total_size;
public roll_state roll;
}
@@ -101,7 +106,7 @@ namespace SharpHash.Checksums
{
self = new fuzzy_state();
self.bh = new blockhash_context[NUM_BLOCKHASHES];
- for(int i = 0; i < NUM_BLOCKHASHES; i++)
+ for (int i = 0; i < NUM_BLOCKHASHES; i++)
self.bh[i].digest = new byte[SPAMSUM_LENGTH];
self.bhstart = 0;
@@ -227,14 +232,16 @@ namespace SharpHash.Checksums
/* We have hit a reset point. We now emit hashes which are
* based on all characters in the piece of the message between
* the last reset point and this one */
- if (0 == self.bh[i].dlen) {
+ if (0 == self.bh[i].dlen)
+ {
/* Can only happen 30 times. */
/* First step for this blocksize. Clone next. */
fuzzy_try_fork_blockhash();
}
self.bh[i].digest[self.bh[i].dlen] = b64[self.bh[i].h % 64];
self.bh[i].halfdigest = b64[self.bh[i].halfh % 64];
- if (self.bh[i].dlen < SPAMSUM_LENGTH - 1) {
+ if (self.bh[i].dlen < SPAMSUM_LENGTH - 1)
+ {
/* We can have a problem with the tail overflowing. The
* easiest way to cope with this is to only reset the
* normal hash if we have room for more characters in
@@ -243,11 +250,13 @@ namespace SharpHash.Checksums
* */
self.bh[i].digest[++(self.bh[i].dlen)] = 0;
self.bh[i].h = HASH_INIT;
- if (self.bh[i].dlen < SPAMSUM_LENGTH / 2) {
+ if (self.bh[i].dlen < SPAMSUM_LENGTH / 2)
+ {
self.bh[i].halfh = HASH_INIT;
self.bh[i].halfdigest = 0;
}
- } else
+ }
+ else
fuzzy_try_reduce_blockhash();
}
}
@@ -283,15 +292,17 @@ namespace SharpHash.Checksums
int remain = (int)(FUZZY_MAX_RESULT - 1); /* Exclude terminating '\0'. */
result = new byte[FUZZY_MAX_RESULT];
/* Verify that our elimination was not overeager. */
- if(!(bi == 0 || (UInt64)SSDEEP_BS(bi) / 2 * SPAMSUM_LENGTH < self.total_size))
+ if (!(bi == 0 || (UInt64)SSDEEP_BS(bi) / 2 * SPAMSUM_LENGTH < self.total_size))
throw new Exception("Assertion failed");
result_off = 0;
/* Initial blocksize guess. */
- while ((UInt64)SSDEEP_BS(bi) * SPAMSUM_LENGTH < self.total_size) {
+ while ((UInt64)SSDEEP_BS(bi) * SPAMSUM_LENGTH < self.total_size)
+ {
++bi;
- if (bi >= NUM_BLOCKHASHES) {
+ if (bi >= NUM_BLOCKHASHES)
+ {
throw new OverflowException("The input exceeds data types.");
}
}
@@ -300,7 +311,7 @@ namespace SharpHash.Checksums
--bi;
while (bi > self.bhstart && self.bh[bi].dlen < SPAMSUM_LENGTH / 2)
--bi;
- if((bi > 0 && self.bh[bi].dlen < SPAMSUM_LENGTH / 2))
+ if ((bi > 0 && self.bh[bi].dlen < SPAMSUM_LENGTH / 2))
throw new Exception("Assertion failed");
sb.AppendFormat("{0}:", SSDEEP_BS(bi));
@@ -328,21 +339,25 @@ namespace SharpHash.Checksums
if (remain <= 0)
throw new Exception("Assertion failed");
result[result_off] = b64[self.bh[bi].h % 64];
- if(i < 3 ||
- result[result_off] != result[result_off-1] ||
- result[result_off] != result[result_off-2] ||
- result[result_off] != result[result_off-3]) {
+ if (i < 3 ||
+ result[result_off] != result[result_off - 1] ||
+ result[result_off] != result[result_off - 2] ||
+ result[result_off] != result[result_off - 3])
+ {
++result_off;
--remain;
}
- } else if (self.bh[bi].digest[i] != 0) {
+ }
+ else if (self.bh[bi].digest[i] != 0)
+ {
if (remain <= 0)
throw new Exception("Assertion failed");
result[result_off] = self.bh[bi].digest[i];
- if(i < 3 ||
- result[result_off] != result[result_off-1] ||
- result[result_off] != result[result_off-2] ||
- result[result_off] != result[result_off-3]) {
+ if (i < 3 ||
+ result[result_off] != result[result_off - 1] ||
+ result[result_off] != result[result_off - 2] ||
+ result[result_off] != result[result_off - 3])
+ {
++result_off;
--remain;
}
@@ -361,34 +376,41 @@ namespace SharpHash.Checksums
result_off += i;
remain -= i;
- if (h != 0) {
+ if (h != 0)
+ {
if (remain <= 0)
throw new Exception("Assertion failed");
h = self.bh[bi].halfh;
result[result_off] = b64[h % 64];
- if(i < 3 ||
- result[result_off] != result[result_off-1] ||
- result[result_off] != result[result_off-2] ||
- result[result_off] != result[result_off-3]) {
+ if (i < 3 ||
+ result[result_off] != result[result_off - 1] ||
+ result[result_off] != result[result_off - 2] ||
+ result[result_off] != result[result_off - 3])
+ {
++result_off;
--remain;
}
- } else {
+ }
+ else
+ {
i = self.bh[bi].halfdigest;
- if (i != 0) {
+ if (i != 0)
+ {
if (remain <= 0)
throw new Exception("Assertion failed");
result[result_off] = (byte)i;
- if(i < 3 ||
- result[result_off] != result[result_off-1] ||
- result[result_off] != result[result_off-2] ||
- result[result_off] != result[result_off-3]) {
+ if (i < 3 ||
+ result[result_off] != result[result_off - 1] ||
+ result[result_off] != result[result_off - 2] ||
+ result[result_off] != result[result_off - 3])
+ {
++result_off;
--remain;
}
}
}
- } else if (h != 0)
+ }
+ else if (h != 0)
{
if (self.bh[bi].dlen != 0)
throw new Exception("Assertion failed");
@@ -427,7 +449,7 @@ namespace SharpHash.Checksums
/// Gets the hash of a file
///
/// File path.
- public byte[] File(string filename)
+ public static byte[] File(string filename)
{
// SpamSum does not have a binary representation, or so it seems
throw new NotImplementedException("SpamSum does not have a binary representation.");
@@ -438,7 +460,7 @@ namespace SharpHash.Checksums
///
/// File path.
/// Byte array of the hash value.
- public string File(string filename, out byte[] hash)
+ public static string File(string filename, out byte[] hash)
{
// SpamSum does not have a binary representation, or so it seems
throw new NotImplementedException("Not yet implemented.");
diff --git a/SharpHash/Program.cs b/SharpHash/Program.cs
index bd77a5c..8a6e51e 100644
--- a/SharpHash/Program.cs
+++ b/SharpHash/Program.cs
@@ -32,10 +32,10 @@ namespace SharpHash
public static void Main(string[] args)
{
object[] attributes = typeof(MainClass).Assembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
- string AssemblyTitle = ((AssemblyTitleAttribute) attributes[0]).Title;
+ string AssemblyTitle = ((AssemblyTitleAttribute)attributes[0]).Title;
attributes = typeof(MainClass).Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
Version AssemblyVersion = typeof(MainClass).Assembly.GetName().Version;
- string AssemblyCopyright = ((AssemblyCopyrightAttribute) attributes[0]).Copyright;
+ string AssemblyCopyright = ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
Console.WriteLine("{0} {1}", AssemblyTitle, AssemblyVersion);
Console.WriteLine("{0}", AssemblyCopyright);
@@ -47,7 +47,7 @@ namespace SharpHash
return;
}
- if(!File.Exists(args[0]))
+ if (!File.Exists(args[0]))
{
Console.WriteLine("Specified file cannot be found.");
return;
@@ -55,11 +55,11 @@ namespace SharpHash
FileStream fileStream = new FileStream(args[0], FileMode.Open, FileAccess.Read);
- Int64 bufferSize = 131072;
- byte[] dataBuffer = new byte[bufferSize];
+ const Int64 bufferSize = 131072;
+ byte[] dataBuffer;
Console.WriteLine("Checking for magic's file executable in path");
- bool thereIsMagic = false;
+ bool thereIsMagic;
try
{
@@ -276,7 +276,7 @@ namespace SharpHash
fileStream.Close();
}
- private static string stringify(byte[] hash)
+ static string stringify(byte[] hash)
{
StringBuilder hashOutput = new StringBuilder();