65.9K
CodeProject 正在变化。 阅读更多。
Home

与 PHP 兼容的 MD5 函数

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (12投票s)

2005年7月14日

viewsIcon

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 应用程序,我们需要一种与它们交互的机制。 如果您遇到像我描述的情况,我希望此函数能帮助您。

© . All rights reserved.