写项目时,后台一直用md5加密,一天群里人问,除了MD5还有其它的加密方法吗?当时只知道还有个SHA,但怎么实现什么的都不清楚,于是当网上找了下,把几种常见的加密方法都整理了下,用winform写了个程序,如图:

关键代码

using System.Security;
using System.Security.Cryptography;
using System.Web;
using System.IO;

//MD5       不区分大小写的
        //type 类型,16位还是32位,16位就是取32位的第8到16位
        public string DoMd5Encode(string pwd,string type)
        {
            byte[] result = Encoding.Default.GetBytes(pwd);
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            if (type == "16")
                return BitConverter.ToString(output).Replace("-", "").ToLower().Substring(8,16);    
            else
                return BitConverter.ToString(output).Replace("-", "").ToLower();    
            
        }

/// <summary>
        /// 对字符串进行SHA1加密
        /// </summary>
        /// <param name="strIN">需要加密的字符串</param>
        /// <returns>密文</returns>
        public string SHA1_Encrypt(string Source_String)
        {
            byte[] StrRes = Encoding.Default.GetBytes(Source_String);
            HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
            StrRes = iSHA.ComputeHash(StrRes);
            StringBuilder EnText = new StringBuilder();
            foreach (byte iByte in StrRes)
            {
                EnText.AppendFormat("{0:x2}", iByte);
            }
            return EnText.ToString();
        }

/// <summary>
        /// SHA256加密,不可逆转
        /// </summary>
        /// <param name="str">string str:被加密的字符串</param>
        /// <returns>返回加密后的字符串</returns>
        private string SHA256Encrypt(string str)
        {
            System.Security.Cryptography.SHA256 s256 = new System.Security.Cryptography.SHA256Managed();
            byte[] byte1;
            byte1 = s256.ComputeHash(Encoding.Default.GetBytes(str));
            s256.Clear();
            return Convert.ToBase64String(byte1);
        }

/// <summary>
        /// SHA384加密,不可逆转
        /// </summary>
        /// <param name="str">string str:被加密的字符串</param>
        /// <returns>返回加密后的字符串</returns>
        private string SHA384Encrypt(string str)
        {
            System.Security.Cryptography.SHA384 s384 = new System.Security.Cryptography.SHA384Managed();
            byte[] byte1;
            byte1 = s384.ComputeHash(Encoding.Default.GetBytes(str));
            s384.Clear();
            return Convert.ToBase64String(byte1);
        }

/// <summary>
        /// SHA512加密,不可逆转
        /// </summary>
        /// <param name="str">string str:被加密的字符串</param>
        /// <returns>返回加密后的字符串</returns>
        private string SHA512Encrypt(string str)
        {
            System.Security.Cryptography.SHA512 s512 = new System.Security.Cryptography.SHA512Managed();
            byte[] byte1;
            byte1 = s512.ComputeHash(Encoding.Default.GetBytes(str));
            s512.Clear();
            return Convert.ToBase64String(byte1);
        }

//默认密钥向量
        private byte[] Keys = { 0xEF, 0xAB, 0x56, 0x78, 0x90, 0x34, 0xCD, 0x12 };
        /// <summary>
        /// DES加密字符串
        /// </summary>
        /// <param name="encryptString">待加密的字符串</param>
        /// <param name="encryptKey">加密密钥,要求为8位</param>
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
        public string EncryptDES(string encryptString, string encryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                byte[] rgbIV = Keys;
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Convert.ToBase64String(mStream.ToArray());
            }
            catch
            {
                return encryptString;
            }
        }

/// <summary>
        /// DES解密字符串
        /// </summary>
        /// <param name="decryptString">待解密的字符串</param>
        /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
        public string DecryptDES(string decryptString, string decryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                byte[] rgbIV = Keys;
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch
            {
                return decryptString;
            }
        }

转:goody9807  .net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密

.net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密相关推荐

  1. 用python实现MD5、sha256、sha384、sha512、base64加密

    文章目录 一.hashlib介绍 二.使用hashlib库进行md5加密 1.加密未混淆代码 2.混淆加密代码 三.使用hashlib库进行sha256.sha384.sha512加密 四.多重加密( ...

  2. Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)

    Python hashlib 加密 Python 提供了 hashlib 模块来进行加密操作.在下面的文章中,我们将介绍 hashlib 模块的常用加密算法. 1. hashlib 简介 hashli ...

  3. MessageDigest实现单向加密(MD5、SHA1、SHA-256、SHA-512)

    单向加密与双向加密 双向加密是加密算法中最常用的,它将可以直接理解的明文数据加密为不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文.双向加密适 ...

  4. Java 原生 Base64 编解码、Md5、SHA-1、SHA-256 加密摘要算法

    目录 常用加密算法对比 Base64 编解码 MessageDigest 信息摘要 MD5 信息摘要算法 常用加密算法对比 常用加密算法对比 Base64 编解码 1.BASE64 有自己的编码表,可 ...

  5. c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法

    using System; using System.IO; using System.Data; using System.Text; using System.Diagnostics; using ...

  6. 散列算法比较:MD5、SHA1、SHA256有哪些区别

    在信息安全领域,经常会用到MD5.SHA1.SHA256算法.这三种算法都属于散列算法,或者叫作哈希算法.它们具有输入任意长度,输出长度固定,以及单向性(无法根据散列值还原出消息)的特点.那么,MD5 ...

  7. Java 常见摘要算法——md5、sha1、sha256

    目录 摘要算法简介 md5 使用jdk内置方法实现md5加密 使用bc方式实现md5加密 使用cc方式实现md5加密 sha1 使用jdk内置方法实现sha1加密 使用bc方式实现sha1加密 使用c ...

  8. windows10下用PowerShell命令(Get-FileHash)校验文件的Hash值(MD5、SHA1、SHA256等)

    前言 以前校验hash值都是用另外一软件,比如"hash.exe".今天查了一下,发现windows10的PowerShell命令自带的Get-FileHash命令可以直接用来计算 ...

  9. 【Python】计算文件的MD5、SHA1、SHA256值(校验文件完整性)

    引言 从网络上下载大文件时,官网一般都会提供一个MD5.SHA1或SHA256值: 很多同学可能会好奇这些东西到底是干嘛的?其实这是用来校验文件完整性的.因为从网络上下载大文件具有不确定性,可能会受很 ...

  10. 批量获取文件的摘要(md5、sha1、sha256)

    批量获取文件的摘要(md5.sha1.sha256) 0x01 功能 0x02源码 0x03运行 0x01 功能 刚刚写了一个小工具:用于批量获取文件的摘要:md5.sha1.sha256 具体用法: ...

最新文章

  1. oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
  2. android网络请求回调管理,Android HTTP网络请求的异步实现
  3. java解析java源码_JAVA语言-Java源码解析-Stack源码分析
  4. vs不一致的行尾对话框怎么调出_细分调漆步骤,新手师傅怎么轻松调漆
  5. Springboot实现邮件发送(2020最新版)
  6. 从集合(内存)中创建RDD
  7. NLP --- 隐马尔可夫HMM(极大释似然估计详解)
  8. 写英文论文时,翻译网站的推荐
  9. steam当前计算机无法,steam无法打开【操作思路】
  10. 计算机就是三角函数,三角函数计算器
  11. 计算机中mpeg代表什么,mpg和mpeg格式的区别
  12. ubuntu 安装浏览器flash插件
  13. QCharts随时间流逝
  14. 微信小程序 - 实现搜索界面(带热搜、搜索历史和结果页)
  15. 叶节点到根节点的路径_所有根到叶路径
  16. 《老梁四大名著情商课》笔记- 智商与情商:哪个重,哪个轻
  17. 华为手机支持鸿蒙,2021年华为智能手机全面升级支持鸿蒙2.0
  18. linux之if [ $? -ne 0 ];
  19. linux恢复安卓数据,安卓数据恢复2 - ranfs的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. 数据库修改登录密码方法

热门文章

  1. 互联网50年类脑架构技术演化图
  2. 英特尔10纳米处理器再度跳票,或收缩芯片代工业务
  3. 解释深度学习的新角度,来自光学的启发
  4. 杂谈 | 微软复兴,它与苹果竟有这么多相似之处!
  5. AI与基因科学的对话:从“人工智能”到“动物智能”
  6. 用脑科学支持人工智能
  7. Gartner重磅发布近40页PPT,详解2017年十大战略技术趋势
  8. 程序员真香!IT 业 2020 年平均工资最高
  9. 我在大厂,下班了也戴着工牌
  10. 01背包和完全背包问题