【发布时间】:2010-06-28 08:11:13
【问题描述】:
我一直在寻找扩展方法,偶然发现了一个声称模仿 PHP 如何执行 MD5 函数的函数。这是一个精确的副本(我不明白为什么 Crypto 的声明和初始化是分开完成的......)
public static string MD5(this string s) {
MD5CryptoServiceProvider provider;
provider = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.UTF8.GetBytes(s);
StringBuilder builder = new StringBuilder();
bytes = provider.ComputeHash(bytes);
foreach(byte b in bytes) {
builder.Append(b.ToString("x2").ToLower());
}
return builder.ToString();
}
MSDN 库显示了这样做的方法:
byte[] MD5hash (byte[] data) {
// This is one implementation of the abstract class MD5.
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(data);
return result;
}
除了参数是字符串之外,字符串生成器和附加每个字节的需要是什么?如果我只是对字符串执行 Encoding.UTF8.GetBytes,我应该有一个字节数组,可用于 MSDN 库中的方法。
谁能指出扩展方法的用途?
【问题讨论】:
标签: c# extension-methods md5