博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
博客园首页博问闪存新随笔联系订阅管理 随笔- 252 文章- 0 评论- 45 HashPasswordForStoringInConfigFile中的Md5算法并非常用的Md5算法...
阅读量:6955 次
发布时间:2019-06-27

本文共 1685 字,大约阅读时间需要 5 分钟。

今天在开发一个软件时,同时在B/S版和C/S版中都要用到MD5加密,在

ASP.NET中使用的是

    /** <summary>
    /// 取得MD5加密串
    /// </summary>
    /// <param name="input">源明文字符串</param>
    /// <returns>密文字符串</returns>
    public static string GetMD5Hash(string input)
    ...{
        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strOriginal, "MD5");
    }
的加密方式;
而在WinForm中用的是

    /** <summary>

    /// 取得MD5加密串
    /// </summary>
    /// <param name="input">源明文字符串</param>
    /// <returns>密文字符串</returns>
    public static string GetMD5Hash(string input)
    ...{
        System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] bs = System.Text.Encoding.Default.GetBytes(input);
        bs = md5.ComputeHash(bs);
        System.Text.StringBuilder s = new System.Text.StringBuilder();
        foreach (byte b in bs)
        ...{
            s.Append(b.ToString("x2").ToUpper());
        }
        string password = s.ToString();
        return password;
    }
但发现同样一个字符串,两种方式得出的密文是不一样的,最后才发现原来是编码方式导致的,ASP.NET里默认的是UTF-8编码,把WinForm程序里的System.Text.Encoding.Default.GetBytes(input);替换成System.Text.Encoding.UTF8.GetBytes(input);即可
最终正确版:

    /** <summary>

    /// 取得MD5加密串
    /// </summary>
    /// <param name="input">源明文字符串</param>
    /// <returns>密文字符串</returns>
    public static string GetMD5Hash(string input)
    ...{
        System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
        bs = md5.ComputeHash(bs);
        System.Text.StringBuilder s = new System.Text.StringBuilder();
        foreach (byte b in bs)
        ...{
            s.Append(b.ToString("x2").ToUpper());
        }
        string password = s.ToString();
        return password;
    }

分类: 
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/3803394.html
,如需转载请自行联系原作者
你可能感兴趣的文章
properties文件value换行处理方式
查看>>
docker学习笔记:修改无法启动的容器中的内容
查看>>
android中checkbox的padding引发的问题
查看>>
数据结构之栈的应用
查看>>
序列变换(二分,最小化最大值)
查看>>
mvn dependency:tree
查看>>
使用GoodFeaturesToTrack进行关键点检测---29
查看>>
Android自定义控件View(一)
查看>>
使用下拉列表框<select>标签,节省空间
查看>>
参考SQLHelper编写的OracleHelper
查看>>
C/C++中的getline函数总结:
查看>>
[Angular 2] Handle Reactive Async opreations in Service
查看>>
linux下操作PostgreSQL的常用命令
查看>>
C# Webservice
查看>>
Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)
查看>>
【转】雪崩光电二极管(APD)偏置电源及其电流监测
查看>>
iOS设置圆角的三种方式
查看>>
C#ShowCursor光标的显示与隐藏
查看>>
PHP 正则表达式匹配函数 preg_match 与 preg_match_all
查看>>
关于CAShapeLayer的一些实用案例和技巧
查看>>