c# MD5加密

c# MD5加密usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Security.Cryptography;usingSystem.Text;usingSystem.Threading.Tasks;/****************************** *概要:MD5加密 *设…

大家好,又见面了,我是你们的朋友全栈君。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
/******************************
 * 概要:MD5加密
 * 设计者:DuanXuWen
 * 时间:20180309
 * 版本:0.1
 * 修改者:
 * 修改时间:
 * ***************************/

namespace Common
{

    public class EncrypHelper
    {

        /// <summary>
        ///静态无参构造
        /// </summary>
        static EncrypHelper()
        {

            //默认的密钥
            SecretKey = “HelloWorld..!!”;
        }

        /// <summary>
        /// 使用SHA256加密字符串
        /// </summary>
        /// <param name=”Source”></param>
        /// <returns></returns>
        public static string EncrypToSHA(string Source)
        {

            SHA256Managed sha256 = new SHA256Managed();
            byte[] s = UTF8Encoding.UTF8.GetBytes(Source);
            byte[] t = sha256.ComputeHash(s);
            return Convert.ToBase64String(t);
        }

        /// <summary>
        /// MD5加密(32位)
        /// </summary>
        /// <param name=”str”>加密字符</param>
        /// <returns></returns>
        public static string encrypt(string str)
        {

            string cl = str;
            string pwd = “”;
            MD5 md5 = MD5.Create();
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            for (int i = 0; i < s.Length; i++)
            {

                pwd = pwd + s[i].ToString(“X”);
            }
            return pwd;
        }

        /// <summary>
        /// 缺省的密钥
        /// </summary>
        public static readonly string SecretKey;

        /// <summary>
        /// 使用缺省密钥字符串加密string
        /// </summary>
        /// <param name=”original”>明文</param>
        /// <returns>密文</returns>
        public static string Encrypt(string original)
        {

            return Encrypt(original, SecretKey);
        }

        /// <summary>
        /// 使用缺省密钥字符串解密string
        /// </summary>
        /// <param name=”original”>密文</param>
        /// <returns>明文</returns>
        public static string Decrypt(string original)
        {

            return Decrypt(original, SecretKey, System.Text.Encoding.Default);
        }

        /// <summary>
        /// 使用给定密钥字符串加密string
        /// </summary>
        /// <param name=”original”>原始文字</param>
        /// <param name=”key”>密钥</param>
        /// <returns>密文</returns>
        public static string Encrypt(string original, string key)
        {

            byte[] buff = System.Text.Encoding.Default.GetBytes(original);
            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
            return Convert.ToBase64String(Encrypt(buff, kb));
        }

        /// <summary>
        /// 使用给定密钥字符串解密string
        /// </summary>
        /// <param name=”original”>密文</param>
        /// <param name=”key”>密钥</param>
        /// <returns>明文</returns>
        public static string Decrypt(string original, string key)
        {

            return Decrypt(original, key, System.Text.Encoding.Default);
        }

        /// <summary>
        /// 使用给定密钥字符串解密string,返回指定编码方式明文
        /// </summary>
        /// <param name=”encrypted”>密文</param>
        /// <param name=”key”>密钥</param>
        /// <param name=”encoding”>字符编码方案</param>
        /// <returns>明文</returns>
        public static string Decrypt(string encrypted, string key, Encoding encoding)
        {

            byte[] buff = Convert.FromBase64String(encrypted);
            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
            return encoding.GetString(Decrypt(buff, kb));
        }

        /// <summary>
        /// 生成MD5摘要
        /// </summary>
        /// <param name=”original”>数据源</param>
        /// <returns>摘要</returns>
        public static byte[] MakeMd5(byte[] original)
        {

            MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
            byte[] keyhash = hashmd5.ComputeHash(original);
            hashmd5 = null;
            return keyhash;
        }

        /// <summary>
        /// 使用给定密钥加密
        /// </summary>
        /// <param name=”original”>明文</param>
        /// <param name=”key”>密钥</param>
        /// <returns>密文</returns>
        public static byte[] Encrypt(byte[] original, byte[] key)
        {

            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
            des.Key = MakeMd5(key);
            des.Mode = CipherMode.ECB;
            return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
        }

        /// <summary>
        /// 使用给定密钥解密数据
        /// </summary>
        /// <param name=”encrypted”>密文</param>
        /// <param name=”key”>密钥</param>
        /// <returns>明文</returns>
        public static byte[] Decrypt(byte[] encrypted, byte[] key)
        {

            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
            des.Key = MakeMd5(key);
            des.Mode = CipherMode.ECB;
            return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
        }
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157562.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP入门:在Windows中安装PHP工作环境

    PHP入门:在Windows系统中分别安装PHP工作环境一、什么是LAMP?Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各

    2021年12月20日
    43
  • 一气之下,我一行代码搞定了约瑟夫环问题,面试官懵了[通俗易懂]

    一气之下,我一行代码搞定了约瑟夫环问题,面试官懵了[通俗易懂]大家好,我是帅地。对于约瑟夫环问题估计大家都听说过,除非你刚刚读大一,因为在大一大部分学校的课本都会降到这个算法题。为了以防万一你没听过,我还是给下问题的描述问题描述:编号为1-N的N个士兵围坐在一起形成一个圆圈,从编号为1的士兵开始依次报数(1,2,3…这样依次报),数到m的士兵会被杀死出列,之后的士兵再从1开始报数。直到最后剩下一士兵,求这个士兵的编号。记得有一次,貌似是阿里的面试,面试官给了我一到原汁原味的约瑟夫好,好家伙,看我不把你秀一把。不过,作为一个有着几十场面

    2022年6月4日
    35
  • python语法:如何通过value找key[通俗易懂]

    python语法:如何通过value找key[通俗易懂]python语法:如何通过value找key

    2022年7月23日
    6
  • postman虚拟服务器教程,postman使用教程详解

    postman虚拟服务器教程,postman使用教程详解postman使用教程详解[2021-02-1304:18:39]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace(“/(\s|\&nbsp\;| |\xc2\xa0)/”,””,strip_tags($val));”方法去除所有nbsp即可。推荐:《PHP视频教下面由Redis教程栏目给大家介绍关Redis中的Scan命令的使…

    2022年5月6日
    85
  • SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一个简单的SSM框架的搭建过程,简单易学!SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛。

    2022年2月25日
    38
  • Linux挂载磁盘分区「建议收藏」

    Linux挂载磁盘分区「建议收藏」Linux系统一般都会有未挂载的磁盘,如果我们想使用这些为挂载的磁盘就需要挂载到指定目录才能使用。一、有多个磁盘,将未分区的磁盘挂载1、进入root用户su–2、查看已挂载磁盘的使用情况:df–h可以看到系统已经挂载了sda磁盘,并分为sda1、sda2、sda3,3个分区3、查看所有磁盘信息(包括未挂载磁盘):fdisk–l4、创建新的磁盘…

    2022年6月19日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号