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

相关推荐

  • Pytest(15)pytest分布式执行用例[通俗易懂]

    Pytest(15)pytest分布式执行用例[通俗易懂]前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

    2022年7月29日
  • css gray rgb数值,CSS3 调色板 颜色值对照表

    css gray rgb数值,CSS3 调色板 颜色值对照表HTML导入代码模板:ColorPaletteRuby#D8334Argb(216,51,74)Grapefruit#ED5565rgb(237,85,101)Bittersweet#FC6E51rgb(252,110,81)Sunflower#FFCE54rgb(255,206,84)Straw#E8CE4Drgb(232,206,77)Grass#A0D468rgb(160,212,104)…

    2022年5月17日
  • html5设置table样式_原生js添加样式

    html5设置table样式_原生js添加样式table样式设置表格:._table{width:100%;border-collapse:collapse;border:0px;}设置表头:._tabletheadtr{font-size:13px;color:#2e3b45;text-align:center;background-color:rgba(230,255,250,0.92);…

    2022年9月20日
  • 斗地主老是输?一起用Python做个AI出牌器![通俗易懂]

    斗地主老是输?一起用Python做个AI出牌器![通俗易懂]前言最近在网上看到一个有意思的开源项目,快手团队开发的开源AI斗地主——DouZero。今天我们就一起来学习制作一个基于DouZero的斗地主出牌器,看看AI是如何来帮助我们斗地主的吧!首先一起来看看AI出牌器的效果:下面,我们开始介绍这个AI出牌器的制作过程。一、核心功能设计首先我们这款出牌器是基于DouZero开发的,核心是需要利用训练好的AI模型来帮住我们,给出最优出牌方案。其次关于出牌器,先要需要确认一个AI出牌角色,代表我们玩家自己。我们只要给这个A

    2022年4月29日
  • 网络协议篇之DHCP协议(一)—— DHCP协议基础

    网络协议篇之DHCP协议(一)—— DHCP协议基础一,动态主机配置协议DHCP1,DHCP简介DHCP(DynamicHostConfigurationProtocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。DHCP的前身是BOOTP协议(BootstrapProtocol),BOOTP

    2022年5月10日
  • linux编辑文本(vim)时跳转到最后一行和第一行及相关指令

    linux编辑文本(vim)时跳转到最后一行和第一行及相关指令

    2022年2月8日

发表回复

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

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