| 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)        {            StringBuilder hexBuilder = new StringBuilder();            for (int i = 0; i < bytes.Length; i++)            {                hexBuilder.Append(bytes[i].ToString("x2"));            }            return hexBuilder.ToString();        }    }}
 |