【.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");
        }

       
    }
}
相关推荐
devpotato2 分钟前
缓存与数据库更新顺序不一致问题
java·数据库·redis
问天_观心7 分钟前
大模型微调学习(一)
开发语言·人工智能·学习·语言模型·github
阿里嘎多学长12 分钟前
2026-09-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
xcl092513 分钟前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·spring boot·需求分析
Kyrie_kk23 分钟前
Java--IO--Path文件访问
java·后端
qinqinzqq27 分钟前
Maven POM 格式、Schema 与 XSD:一篇讲透
java·maven
o盟1 小时前
maven本地仓库有 总是去私仓中下载
java·maven·intellij-idea
devpotato1 小时前
Java 批量并发请求:从“能并发“到“结果按完成顺序可用“的三种写法与选型
java
源代码•宸1 小时前
前置准备:定时微服务背景和现状
开发语言·经验分享·后端·微服务·云原生·架构·golang
2601_967338711 小时前
C#上位机开发零基础入门到精通全套视频
开发语言·c#