using NUnit.Framework; using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Security.Cryptography; using System.Security.Policy; using System.Text; using Unity.Android.Gradle.Manifest; using static UnityEngine.Analytics.IAnalytic; namespace AxibugEmuOnline.Client.Common { public static class Helper { public static long GetNowTimeStamp() { return GetTimeStamp(DateTime.Now); } /// /// 获取时间戳 /// /// public static long GetTimeStamp(DateTime dt) { TimeSpan ts = dt - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalSeconds); } public static byte[] CompressByteArray(byte[] bytesToCompress) { using (var compressedMemoryStream = new MemoryStream()) using (var gzipStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress)) { gzipStream.Write(bytesToCompress, 0, bytesToCompress.Length); gzipStream.Close(); return compressedMemoryStream.ToArray(); } } public static byte[] DecompressByteArray(byte[] compressedBytes) { using (var compressedMemoryStream = new MemoryStream(compressedBytes)) using (var gzipStream = new GZipStream(compressedMemoryStream, CompressionMode.Decompress)) using (var resultMemoryStream = new MemoryStream()) { gzipStream.CopyTo(resultMemoryStream); return resultMemoryStream.ToArray(); } } public static string FileMD5Hash(string filePath) { using (var md5 = MD5.Create()) { using (var stream = File.OpenRead(filePath)) { var hash = md5.ComputeHash(stream); var sb = new StringBuilder(hash.Length * 2); foreach (var b in hash) sb.AppendFormat("{0:x2}", b); return sb.ToString(); } } } static byte[] FileMD5HashByte(byte[] data) { using (var md5 = MD5.Create()) { using (var stream = new MemoryStream(data)) { return md5.ComputeHash(stream); } } } /// /// 单个文件hash /// /// /// public static string FileMD5Hash(byte[] data) { byte[] hash = FileMD5HashByte(data); var sb = new StringBuilder(hash.Length * 2); foreach (var b in hash) sb.AppendFormat("{0:x2}", b); return sb.ToString(); } /// /// 多文件总hash (顺序不影响结果) /// /// /// public static string FileMD5Hash(List dataList) { string allhash = string.Empty; List temp = new List(); for (int i = 0; i < dataList.Count; i++) { if (dataList[i] == null) continue; temp.Add(FileMD5Hash(dataList[i])); } temp.Sort(); var sb = new StringBuilder(); for (int i = 0; i < temp.Count; i++) { sb.AppendLine(temp[i].ToString()); } //这里用Ascll return FileMD5Hash(Encoding.ASCII.GetBytes(sb.ToString())); } } }