74 lines
2.6 KiB
C#
74 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Linq;
|
|
using System.IO;
|
|
using System.Security.Cryptography;
|
|
|
|
namespace Saviour_Backup_System
|
|
{
|
|
class tools
|
|
{
|
|
public static string Trim(string value, int maxLength)
|
|
{
|
|
if (value.Length > maxLength)
|
|
{
|
|
return value.Substring(0, maxLength - 3) + "...";
|
|
}
|
|
return value;
|
|
}
|
|
|
|
public static string hash(string input)
|
|
{
|
|
// step 1, calculate MD5 hash from input
|
|
MD5 md5 = MD5.Create();
|
|
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
|
|
byte[] hash = md5.ComputeHash(inputBytes);
|
|
|
|
// step 2, convert byte array to hex string
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < hash.Length; i++)
|
|
{
|
|
sb.Append(hash[i].ToString("X2"));
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
public static Int64 getUnixTimeStamp() { return (Int64)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; }
|
|
|
|
public static string hashDirectory(string path)
|
|
{
|
|
// assuming you want to include nested folders
|
|
var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
|
|
.OrderBy(p => p).ToList();
|
|
|
|
MD5 md5 = MD5.Create();
|
|
|
|
for (int i = 0; i < files.Count; i++)
|
|
{
|
|
string file = files[i];
|
|
|
|
// hash path
|
|
string relativePath = file.Substring(path.Length + 1);
|
|
byte[] pathBytes = Encoding.UTF8.GetBytes(relativePath.ToLower());
|
|
md5.TransformBlock(pathBytes, 0, pathBytes.Length, pathBytes, 0);
|
|
|
|
// hash contents
|
|
byte[] contentBytes = File.ReadAllBytes(file);
|
|
if (i == files.Count - 1)
|
|
md5.TransformFinalBlock(contentBytes, 0, contentBytes.Length);
|
|
else
|
|
md5.TransformBlock(contentBytes, 0, contentBytes.Length, contentBytes, 0);
|
|
}
|
|
|
|
return BitConverter.ToString(md5.Hash).Replace("-", "").ToLower();
|
|
}
|
|
|
|
public static DateTime unixDateTime(long unixTimeStamp)
|
|
{
|
|
// Unix timestamp is seconds past epoch
|
|
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
|
|
dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
|
|
return dtDateTime;
|
|
}
|
|
}
|
|
}
|