SDK/MrAG/Checksum.cs

77 lines
2.1 KiB
C#

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();
}
}
}