| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace OpenSubtitlesHandler{    public class MovieHasher    {        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))            {                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);            }            input.Close();            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();        }    }}
 |