我正在尝试将一些C# ASP.NET try服务集成到我的PHP应用程序中,但是有一个很大的问题。进行加密的方式与C#进行MD5加密的方式不兼容。我已经找到了将C# MD5转换为PHP MD5的解决方案,但是我不能更改C#代码。有没有一种方法可以改变PHP进行MD5加密的方式来匹配C#?c#加密的工作原理如下:
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(stringToEncrypt);
String myString = Convert.ToBase64String(MD5.ComputeHash(bs));发布于 2010-12-14 05:51:12
由于MD5是一种已发布的算法,因此在PHP和c#中的实现是相同的。唯一的区别是它们产生的字节序列的字符串格式。PHP生成一个十六进制字符串,因此您只需要将十六进制转换为Base64。
发布于 2010-12-14 05:45:56
这可能是一个编码问题。确保您的PHP版本获得了字符串的UTF-8表示,应用MD5,然后将其转换为base64字符串,这样就没问题了。
发布于 2010-12-14 05:52:55
这是我以前在PHP和C#之间遇到过的编码问题。
如果PHP正在处理ISO-8859-1字符串(这可能就是您的情况),您可以这样做:
md5(utf8_encode($stringToEncrypt))最好的测试方法是尝试一个包含a-z内容的非常简单的字符串,不管有什么编码问题,它都可以很好地工作。如果它能工作,而整个事情都不能工作,你就会有编码问题。
您还可以执行以下操作:
byte[] bs = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(stringToEncrypt);和
md5($stringToEncrypt)将会工作得很好。
https://stackoverflow.com/questions/4433744
复制相似问题