【.NET】MD5加密

文章目录


csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Web;

namespace GiftWeb.Util
{
    public class MD5Encrypt
    {

        /// <summary>
        /// 方法一:通过使用 new 运算符创建对象
        /// </summary>
        /// <param name="strSource">需要加密的明文</param>
        /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns>
        public static string MD51(string strSource,string temp)
        {
            //new
            System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

            //获取密文字节数组
            byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource+temp));

            //转换成字符串,并取9到25位
            //string strResult = BitConverter.ToString(bytResult, 4, 8);
            //转换成字符串,32位
            string strResult = BitConverter.ToString(bytResult);

            //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
            strResult = strResult.Replace("-", "");
            return strResult;
        }


        // 方法二不稳定,有时返回的是30位(如加密"123"时),尽量少用方法二!

        /// <summary>
        /// 方法二:通过调用特定加密算法的抽象类上的 Create 方法,创建实现特定加密算法的对象。
        /// </summary>
        /// <param name="strSource">需要加密的明文</param>
        /// <returns>返回32位加密结果</returns>
        public static string MD52(string strSource,string temp)
        {
            string strResult = "";

            //Create
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();

            //注意编码UTF8、UTF7、Unicode等的选择 
            byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource+temp));

            //字节类型的数组转换为字符串
            for (int i = 0; i < bytResult.Length; i++)
            {
                //16进制转换
                strResult = strResult + bytResult[i].ToString("X");
            }
            return strResult;
        }



        /// <summary>
        /// 方法三:直接使用HashPasswordForStoringInConfigFile生成
        /// </summary>
        /// <param name="strSource">需要加密的明文</param>
        /// <returns>返回32位加密结果</returns>
        public static string MD53(string strSource,string temp)
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource+temp, "MD5");
        }

       
    }
}
相关推荐
程序员JerrySUN3 分钟前
全面理解 Linux 内核性能问题:分类、实战与调优策略
java·linux·运维·服务器·单片机
糯米导航6 分钟前
Java毕业设计:办公自动化系统的设计与实现
java·开发语言·课程设计
糯米导航10 分钟前
Java毕业设计:WML信息查询与后端信息发布系统开发
java·开发语言·课程设计
米粉030528 分钟前
深入剖析Nginx:从入门到高并发架构实战
java·运维·nginx·架构
简诚30 分钟前
HttpURLConnection实现
java
MessiGo38 分钟前
Javascript 编程基础(5)面向对象 | 5.1、构造函数实例化对象
开发语言·javascript·原型模式
大霞上仙41 分钟前
nonlocal 与global关键字
开发语言·python
galaxy_strive1 小时前
绘制饼图详细过程
开发语言·c++·qt
androidwork1 小时前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·java·kotlin·androidx
陈小桔1 小时前
限流算法java实现
java