zoukankan      html  css  js  c++  java
  • 【加密算法】SHA

    一、简介

    安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。

    SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的杂凑算法。

    二、实现

        /// <summary>
        /// SHA加密  不可逆  不推荐
        /// </summary>
        public class ShaHelper
        {
            /// <summary>
            /// SHA1加密 不可逆  不推荐使用
            /// </summary>
            /// <param name="plaintext"></param>
            /// <returns></returns>
            public static string Encrypt1(string plaintext)
            {
                SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
                byte[] byteArray = Encoding.UTF8.GetBytes(plaintext);
                byte[] bytResult = sha1.ComputeHash(byteArray);
                sha1.Clear();
                string strResult = BitConverter.ToString(bytResult);
                return strResult.Replace("-", "");
            }
    
            /// <summary>
            /// SHA256加密 不可逆
            /// </summary>
            /// <param name="plaintext"></param>
            /// <returns></returns>
            public static string Encrypt256(string plaintext)
            {
                SHA256Managed sha256 = new SHA256Managed();
                byte[] byteArray = Encoding.UTF8.GetBytes(plaintext);
                byte[] bytResult = sha256.ComputeHash(byteArray);
                sha256.Clear();
    
                string strResult = BitConverter.ToString(bytResult);
                return strResult.Replace("-", "");
            }
    
            /// <summary>
            /// SHA384加密 不可逆
            /// </summary>
            /// <param name="plaintext"></param>
            /// <returns></returns>
            public static string Encrypt384(string plaintext)
            {
                SHA384Managed sha384 = new SHA384Managed();
                byte[] byteArray = Encoding.UTF8.GetBytes(plaintext);
                byte[] bytResult = sha384.ComputeHash(byteArray);
                sha384.Clear();
    
                string strResult = BitConverter.ToString(bytResult);
                return strResult.Replace("-", "");
            }
    
            /// <summary>
            /// SHA512加密 不可逆
            /// </summary>
            /// <param name="plaintext"></param>
            /// <returns></returns>
            public static string Encrypt512(string plaintext)
            {
                SHA512Managed sha512 = new SHA512Managed();
                byte[] byteArray = Encoding.UTF8.GetBytes(plaintext);
                byte[] bytResult = sha512.ComputeHash(byteArray);
                sha512.Clear();
    
                string strResult = BitConverter.ToString(bytResult);
                return strResult.Replace("-", "");
            }
        }
  • 相关阅读:
    Android异步操作总结
    datatable1.9 与datatable1.10以数据差异
    ftk学习记录(形成全屏幕套件)
    linux处置服务Iptables
    Linux课程---9、安装RPM包(RPM的全称是什么)
    Linux课程---8、Linux启动流程
    Linux课程---7、shell技巧(获取帮助命令)
    Linux课程---6、别名管理和网络配置(Linux命令如何记)
    Linux课程---5、常用文件命令和目录命令(创建文件命令)
    英语发音规则---L字母
  • 原文地址:https://www.cnblogs.com/weiweixiang/p/10102983.html
Copyright © 2011-2022 走看看