C#哈希加密

a102470 2014-12-09 06:14:38
public string EncodePassword(string pass, int passwordFormat, string salt)
{
if (passwordFormat == 0)
{
return pass;
}
byte[] bytes = Encoding.Unicode.GetBytes(pass);
byte[] src = Convert.FromBase64String(salt);
byte[] dst = new byte[src.Length + bytes.Length];
byte[] inArray = null;
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
if (passwordFormat == 1)
{
inArray = HashAlgorithm.Create(Membership.HashAlgorithmType).ComputeHash(dst);
}
return Convert.ToBase64String(inArray);
}
同样的代码再两个不同的程序中加密出来的值不一样,有一个加密的值还是变化的,版本都是V4.0.0
...全文
295 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
a102470 2014-12-10
  • 打赏
  • 举报
回复
引用 1 楼 github_22161131 的回复:
这相当于hash(salt + pass),结果取决于salt、pass和使用的hash算法。需要看下 Membership.HashAlgorithmType 的值,这是可以由配置文件影响的。而本来salt的目的就是同样的pass要生成出不同的结果,这个salt应该是随机的,和生成的hash值都保存到数据库。如果你给的pass和salt是固定的,而产生的值还会变化,那说明hash算法是使用了hmac类的算法,key没有给就是随机的。 这段代码很像是.net自带的SqlMembershipProvider的简化版本,不过自己写的话最好把hash算法固定下来,不要用Membership.HashAlgorithmType这种方式。也可以用我在 http://bbs.csdn.net/topics/390943887#post-398608856 写的代码。
的确是配置的文件的问题,现在解决了
software_artisan 2014-12-10
  • 打赏
  • 举报
回复
        public static string GetHash(string pwd)
        {
            string strHash = String.Empty;
            MD5 md5 = MD5.Create();
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(pwd.Trim()));

            for (int i = 0; i < s.Length; i++)
            {
                strHash = strHash + s[i].ToString("X2");
            }
            return strHash;
        }
winnowc 2014-12-09
  • 打赏
  • 举报
回复
这相当于hash(salt + pass),结果取决于salt、pass和使用的hash算法。需要看下 Membership.HashAlgorithmType 的值,这是可以由配置文件影响的。而本来salt的目的就是同样的pass要生成出不同的结果,这个salt应该是随机的,和生成的hash值都保存到数据库。如果你给的pass和salt是固定的,而产生的值还会变化,那说明hash算法是使用了hmac类的算法,key没有给就是随机的。 这段代码很像是.net自带的SqlMembershipProvider的简化版本,不过自己写的话最好把hash算法固定下来,不要用Membership.HashAlgorithmType这种方式。也可以用我在 http://bbs.csdn.net/topics/390943887#post-398608856 写的代码。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧