与 PHP 兼容的 MD5 函数





4.00/5 (12投票s)
2005年7月14日

101257
描述了一个与 PHP 函数兼容的 MD5 函数的实现。
引言
最近我需要将一个 ASP.NET 应用程序与 SugarCRM 集成,这是一个开源的 CRM 实现(非常好用)。
SugarCRM 发布了一个 SOAP API,但我需要以与 PHP 的 MD5 函数兼容的 MD5 格式发送密码(SugarCRM 是基于 PHP 构建的)。 因此,我编写了一个模拟 PHP MD5 函数的函数。
MD5 函数
在 PHP 中,MD5 函数接收一个字符串并返回一个长度为 32 的十六进制数。
因此,在 C# 中实现此函数如下
using System.Security.Cryptography;
using System.Text;
public sealed class PhpCompatible
{
public static string Md5Hash (string pass)
{
MD5 md5 = MD5CryptoServiceProvider.Create ();
byte[] dataMd5 = md5.ComputeHash (Encoding.Default.GetBytes (pass));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < dataMd5.Length; i++)
sb.AppendFormat("{0:x2}", dataMd5[i]);
return sb.ToString ();
}
我遇到的一个困难在于 AppendFormat
,因为我需要用 0 填充十六进制数字。 解决方案是在格式字符串的 x 后面放置一个 2。 通常,Format 函数的文档很难理解。
市面上有很多 PHP 应用程序,我们需要一种与它们交互的机制。 如果您遇到像我描述的情况,我希望此函数能帮助您。