using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Security.Cryptography; namespace MrAG { public class Checksum { // // "This is like FABFUKAU(*W(&!@*JKHDHD" // // - Bromvlieg // // // "Cool story, bro." // // - Angelo // public class FileInfo{ public string Path; public string Hash; public string LastWritten; public string LastAccessed; public string DateCreated; public long Size; public FileInfo(){} public FileInfo(string path){ FileInfo f = MrAG.Checksum.GetInfo(path); this.Hash = f.Hash; this.Path = f.Path; this.LastWritten = f.LastWritten; this.LastAccessed = f.LastWritten; this.DateCreated = f.DateCreated; this.Size = f.Size; } } public static FileInfo GetInfo(string Filename){ FileInfo f = new FileInfo(); System.IO.FileInfo Fileinfo = new System.IO.FileInfo(Filename); f.Hash = MrAG.Checksum.FileHash(Filename); f.DateCreated = Fileinfo.CreationTimeUtc.ToString(); f.LastAccessed = Fileinfo.LastAccessTimeUtc.ToString(); f.LastWritten = Fileinfo.LastWriteTimeUtc.ToString(); f.Size = Fileinfo.Length; return f; } public static String FileHash(String Filename) { FileStream File = new FileStream(Filename, FileMode.Open); MD5 md5 = new MD5CryptoServiceProvider(); byte[] RetVal = md5.ComputeHash(File); File.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < RetVal.Length; i++) sb.Append(RetVal[i].ToString("x2")); return sb.ToString().ToLower(); } } }