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);
        }
    }
}

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • armv6、armv7、armv7s、arm64 与开发静态库(.a)

    armv6、armv7、armv7s、arm64 与开发静态库(.a)声明:本帖系列均为在转载和摘抄的基础上进行补充。若转载请备注原文出处。/** 第一部分 初步认识*/ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,它的性能在同等功耗产品中也很出色,几乎所有手机都是使用它的。Armv6、armv7、armv7s、arm64都是arm处理器的指令集,所有指令集原则上都是向下兼容

  • MAC 更新SVN到1.8

    MAC 更新SVN到1.8

  • tcp和udp的区别和使用场景_TCP跟UDP有什么不同

    tcp和udp的区别和使用场景_TCP跟UDP有什么不同TCPTCP是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。UDPUDP是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。…

  • 设计测试用例的方法

    设计测试用例的方法如果测试的时间有限,如何保证在有限的时间内让产品上线?(1)有限的时间内测试,保证用户经常使用(使用频率比较高,主要的,核心的功能)功能的质量(2)如果有限的时间所有的功能不能完全测完,可以和产品经理开发商量,把没有通过测试的,有风险的功能把用户的入口,屏蔽掉(让用户无法使用),产生错误风险就会降低(3)本次测试,测试报告写清楚,这次上线,哪些功能测试了,哪些功能没有测试,上线风险分析清楚。百度云盘的测试用例太多了,如何去写?(1)用户经常使用的功能有哪些?文件的存储(长传,接受)下载分享

  • piggycase_java状态机设计

    piggycase_java状态机设计一、实验目的练习使用动态规划算法解决实际问题(使用Java语言实现)二、实验内容【问题描述】给定一个空存钱罐的重量和这个存钱罐最多能装进去的重量,现在需要在不打破这个存钱罐的情况下猜测里面最少的钱。每种钱的数量不做限制,条件是必须装满,同时给出每种钱币的价值和重量。【输入】输入的第一行数据包含整数T,表示测试用例的数量。每个测试用例的第一行都包含两个整数e和f(1<=e<=f<=10000),分别表示空存钱罐和装满硬币的存钱罐的重量(以克记)。第二行包含一个整数n(1&

  • C++实现邮件群发的方法

    这篇文章主要介绍了C++实现邮件群发的方法,较为详细的分析了邮件发送的原理与C++相关实现技巧,非常具有实用价值,需要的朋友可以参考下本文实例讲述了C++实现邮件群发的方法。分享给大家供大家参考。具

    2021年12月27日

发表回复

您的电子邮箱地址不会被公开。

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