123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
- using System.IO;
- using System.Text;
- namespace OpenSubtitlesHandler
- {
- public class MovieHasher
- {
- public static byte[] ComputeMovieHash(Stream input)
- {
- using (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))
- {
- 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;
- }
- }
- public static string ToHexadecimal(byte[] bytes)
- {
- var hexBuilder = new StringBuilder();
- for (int i = 0; i < bytes.Length; i++)
- {
- hexBuilder.Append(bytes[i].ToString("x2"));
- }
- return hexBuilder.ToString();
- }
- }
- }
|