使用MD5和Base64在PHP和C#中使用不同的哈希

时间:2017-09-18 13:15:32

标签: c# php hash

我在PHP和C#中遇到MD5和Base64函数的问题。当我尝试哈希我的字符串没有波兰字符时它没关系,但当我使用波兰字符返回不同。我该如何解决这个问题?

C#

MD5 md5 = MD5.Create();
string hash = Convert.ToBase64String(md5.ComputeHash(Encoding.ASCII.GetBytes(tbPassword.Text)));

PHP

base64_encode(md5($string, true));

2 个答案:

答案 0 :(得分:0)

这是因为你使用的是ASCII。请尝试使用Encoding.UTF8或允许扩展字符的任何其他编码。另一件事:请不要使用MD5作为密码。多年来一直被认为是不安全的。

答案 1 :(得分:0)

您可以在PHP中强制使用相同的编码:

base64_encode(md5(mb_convert_encoding($string,"ASCII"), true));

请注意,此处(在C#和PHP代码中)的明显问题是您丢失了信息。另一个明显的问题是你在看似密码的情况下做了MD5。这是个坏主意。

这是一个PHP示例:http://sandbox.onlinephpfunctions.com/code/e21dd185093817217427b6cd4e58a223e6ca3b27

这是C#示例:http://csharppad.com/gist/b26f07cbf9d53d809490e931e6cfbe1d