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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue解决跨域问题用后端配合吗_vue图片跨域解决

    vue解决跨域问题用后端配合吗_vue图片跨域解决vue解决跨域问题

    2022年9月17日
    0
  • psutil查看系统进程

    psutil查看系统进程>>>psutil.pids()#所有进程ID[3865,3864,3863,3856,3855,3853,3776,…,45,44,1,0]>>>p=psutil.Process(3776)#获取指定进程ID=3776,其实就是当前Python交互环境>>>p.name()#进程名称’p…

    2022年6月6日
    74
  • Linux下安装mysql8.0.20

    Linux下安装mysql8.0.20文章目录Linux下安装mysql8.0.20安装前准备安装Linux下安装mysql8.0.20安装前准备1.下载地址:2.检测是否安装过mysql#检测是否安装过mysqlrpm-qa|grepmysql#删除命令rpm-e–nodepsmysql-libs-5.1.73-5.el6_6.x86_643.查询所有Mysql对应的文件夹(删除)whereismysqlrm-rf/usr/lib64/mysql/usr/share/mysqlfin

    2022年6月9日
    34
  • nodejs安装淘宝镜像(配置淘宝镜像)

    强烈推荐30个原生JavaScript的demo,包括canvas时钟特效、自定义视频播放器、搜索栏快速匹配、fetch访问资源、console调试技巧等,先fork后学习,详见点击打开链接,欢迎点赞~~~谢谢,共同进步学习!将npm的注册表源设置为国内的镜像1、国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度2、国内优秀npm镜像推荐及使用:http://rin…

    2022年4月18日
    941
  • xml文件格式例如以下

    xml文件格式例如以下

    2021年11月28日
    54
  • Tomcat安装及环境配置(详细教程)

    Tomcat安装及环境配置(详细教程)Tomcat安装及环境配置(详细教程)tomcat下载及安装1、进入官网www.apache.org,找到Projects中的projectList找到tomcatDownload下边的版本,这里最新的是10.0x,但是一般不选最新版本,我选择的是8.5x,所以点击Download下边的Tomcat8这里我选择了64位的Windows版本,根据自己的需求下载。(建议:最好别放到C盘)下载之后,解压配置环境变量系统变量添加变量:变量名:CATAL..

    2022年4月30日
    63

发表回复

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

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