public static string Encrypt(ShaMode mode, string input)
        {
            switch (mode)
            {
            case ShaMode.SHA256:
                using (SHA256Managed sha = new SHA256Managed())
                {
                    return(BitConverter.ToString(sha.ComputeHash(Encoding.ASCII.GetBytes(input))).Replace("-", "").ToLower());
                }

            case ShaMode.SHA512:
                using (SHA512Managed sha = new SHA512Managed())
                {
                    return(BitConverter.ToString(sha.ComputeHash(Encoding.ASCII.GetBytes(input))).Replace("-", "").ToLower());
                }

            default:
                return(string.Empty);
            }
        }
示例#2
0
        /// <summary>
        /// 以指定的编码方式计算字符串指定模式的SHA值。
        /// </summary>
        /// <param name="input">需要计算SHA值的字符串。</param>
        /// <param name="encoding">字符串的编码方式。</param>
        /// <param name="mode">计算SHA的模式。</param>
        /// <returns>字符串对应的SHA值。</returns>
        /// <exception cref="ArgumentNullException">参数encoding为null时将抛出该异常。</exception>
        /// <exception cref="ArgumentException">传入不能识别的ShaMode时将抛出该异常。</exception>
        public static string ComputeSha(string input, Encoding encoding, ShaMode mode)
        {
            int length = Convert.ToInt32(mode);

            if (string.IsNullOrEmpty(input))
            {
                return(string.Empty.PadLeft(length, '0'));
            }
            if (encoding == null)
            {
                throw new ArgumentNullException("encoding");
            }
            byte[]        buffer  = encoding.GetBytes(input);
            StringBuilder builder = new StringBuilder(length);

            using (HashAlgorithm provider = Encryption.CreateShaProvider(mode)) {
                byte[] result = provider.ComputeHash(buffer);
                for (int i = 0; i < result.Length; i++)
                {
                    builder.Append(result[i].ToString("X2"));
                }
            }
            return(builder.ToString());
        }
示例#3
0
 /// <summary>
 /// 以UTF-8编码计算字符串指定模式的SHA值。
 /// </summary>
 /// <param name="input">需要计算SHA值的字符串。</param>
 /// <param name="mode">计算SHA的模式。</param>
 /// <returns>字符串对应的SHA值。</returns>
 /// <exception cref="ArgumentException">传入不能识别的ShaMode时将抛出该异常。</exception>
 public static string ComputeSha(string input, ShaMode mode)
 {
     return(Encryption.ComputeSha(input, Encoding.UTF8, mode));
 }