| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 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(string filename)        {            byte[] result;            using (Stream input = File.OpenRead(filename))            {                result = ComputeMovieHash(input);            }            return result;        }        private 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();        }    }}
 |