/// <summary> /// SHA384加密,不可逆转 /// </summary> /// <param name="data">string data:被加密的字符串</param> /// <param name="isBase64"></param> /// <returns>返回加密后的字符串</returns> public static string HashSHA384(string data, bool isBase64 = false) { SHA384 s384 = new SHA384CryptoServiceProvider(); byte[] byte1 = Encoding.UTF8.GetBytes(data); byte1 = s384.ComputeHash(byte1); s384.Clear(); if (isBase64) { return(Convert.ToBase64String(byte1)); } else { return(ConvertHelper.ToString(byte1)); } }
/// <summary> /// 计算SHA-384码 /// </summary> /// <param name="word">字符串</param> /// <param name="toUpper">返回哈希值格式 true:英文大写,false:英文小写</param> /// <returns></returns> public static string Hash_SHA_384(string word, bool toUpper = false) { try { SHA384CryptoServiceProvider SHA384CSP = new SHA384CryptoServiceProvider(); byte[] bytValue = Encoding.UTF8.GetBytes(word); byte[] bytHash = SHA384CSP.ComputeHash(bytValue); SHA384CSP.Clear(); //根据计算得到的Hash码翻译为SHA-1码 string sHash = "", sTemp = ""; for (int counter = 0; counter < bytHash.Count(); counter++) { long i = bytHash[counter] / 16; if (i > 9) { sTemp = ((char)(i - 10 + 0x41)).ToString(); } else { sTemp = ((char)(i + 0x30)).ToString(); } i = bytHash[counter] % 16; if (i > 9) { sTemp += ((char)(i - 10 + 0x41)).ToString(); } else { sTemp += ((char)(i + 0x30)).ToString(); } sHash += sTemp; } //根据大小写规则决定返回的字符串 return(toUpper ? sHash : sHash.ToLower()); } catch (Exception ex) { throw new Exception(ex.Message); } }
} //compute hash from arguments and return hash value as string private static string GetSHA384Hash(string text) { //create variables for computing hash and making it a string UnicodeEncoding UniCode = new UnicodeEncoding(); byte[] HashResult; byte[] msg = UniCode.GetBytes(text); SHA384 hashString = new SHA384CryptoServiceProvider(); string Str = ""; //compute hash with SHA384 module and format output as string //convert bytes in HashResult to string values HashResult = hashString.ComputeHash(msg); foreach (byte x in HashResult) { Str += String.Format("{0:x2}", x); } //clear excess resource usage hashString.Clear(); return(Str); } //compute hash from arguments and return hash value as string