为什么我从c#到js得到不同的MD5哈希? [英] Why I get different MD5 hash from c# to js?

查看:0
本文介绍了为什么我从c#到js得到不同的MD5哈希?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用于加密密码的C#函数:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
System.Security.Cryptography.MD5CryptoServiceProvider _md5Provider = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(_password);
            bs = _md5Provider.ComputeHash(bs);
            System.Text.StringBuilder s = new System.Text.StringBuilder();
            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2").ToLower());
            }

            string _md5password = s.ToString();

我尝试用crypto-js/md5加密js中的相同密码:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
loginUser() {
                console.log(md5(this.password).toString());
            }

我得到不同的哈希。

推荐答案

看起来该文件是以非UTF-8编码保存的。

MD5这样的散列函数从字节数组计算散列,而不是从字符串。因此,您首先使用特定的编码(如Unicode、UTF-8或ANSI)从密码计算一个字节数组;使用不同的编码可以得到不同的值。

要生成相同的MD5散列,请使用UTF-8保存JavaScript文件(因为C#代码使用的是UTF-8)。这样,在C#和JavaScript程序中,MD5函数都对具有相同值的字节数组进行计算,因此散列将是相同的。

这篇关于为什么我从c#到js得到不同的MD5哈希?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
C#/.NET最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆