我在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));
答案 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