|
@@ -8,29 +8,31 @@ namespace OpenSubtitlesHandler
|
|
|
{
|
|
|
public static byte[] ComputeMovieHash(Stream input)
|
|
|
{
|
|
|
- long lhash, streamsize;
|
|
|
- streamsize = input.Length;
|
|
|
- lhash = streamsize;
|
|
|
-
|
|
|
- long i = 0;
|
|
|
- byte[] buffer = new byte[sizeof(long)];
|
|
|
- while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0))
|
|
|
+ using (input)
|
|
|
{
|
|
|
- i++;
|
|
|
- lhash += BitConverter.ToInt64(buffer, 0);
|
|
|
- }
|
|
|
+ long lhash, streamsize;
|
|
|
+ streamsize = input.Length;
|
|
|
+ lhash = streamsize;
|
|
|
|
|
|
- input.Position = Math.Max(0, streamsize - 65536);
|
|
|
- i = 0;
|
|
|
- while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0))
|
|
|
- {
|
|
|
- i++;
|
|
|
- lhash += BitConverter.ToInt64(buffer, 0);
|
|
|
+ long i = 0;
|
|
|
+ byte[] buffer = new byte[sizeof(long)];
|
|
|
+ while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0))
|
|
|
+ {
|
|
|
+ i++;
|
|
|
+ lhash += BitConverter.ToInt64(buffer, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ input.Position = Math.Max(0, streamsize - 65536);
|
|
|
+ i = 0;
|
|
|
+ while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0))
|
|
|
+ {
|
|
|
+ i++;
|
|
|
+ lhash += BitConverter.ToInt64(buffer, 0);
|
|
|
+ }
|
|
|
+ byte[] result = BitConverter.GetBytes(lhash);
|
|
|
+ Array.Reverse(result);
|
|
|
+ return result;
|
|
|
}
|
|
|
- input.Close();
|
|
|
- byte[] result = BitConverter.GetBytes(lhash);
|
|
|
- Array.Reverse(result);
|
|
|
- return result;
|
|
|
}
|
|
|
|
|
|
public static string ToHexadecimal(byte[] bytes)
|