C# 在C中实现MD5函数的奇怪方法#

C# 在C中实现MD5函数的奇怪方法#,c#,extension-methods,md5,C#,Extension Methods,Md5,我在寻找扩展方法,无意中发现了一个函数,它声称模仿PHP如何实现MD5函数。这里有一个精确的副本(我不明白为什么加密的声明和初始化是分开进行的…) MSDN库将此显示为执行此操作的方法: byte[] MD5hash (byte[] data) { // This is one implementation of the abstract class MD5. MD5 md5 = new MD5CryptoServiceProvider(); byte[] result =

我在寻找扩展方法,无意中发现了一个函数,它声称模仿PHP如何实现MD5函数。这里有一个精确的副本(我不明白为什么加密的声明和初始化是分开进行的…)

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;
}
除了作为字符串的参数外,stringbuilder和追加每个字节还有什么需要?如果我只是对字符串执行Encoding.UTF8.GetBytes,我应该有一个字节数组,可用于MSDN库中的方法


有人能指出扩展方法的用途吗?

第一个方法返回结果的十六进制编码。后者返回一个
字节[]
,而不将其编码为字符串中的十六进制


前者在以字符串形式返回结果(可能是URL、表单等)时更为方便。

stringbuilder的整个功能是将字节转换为十六进制字符串(例如,将16个字节转换为32个字符)。请参阅,以了解实现相同功能的各种其他方法。

+1第一种方法也将十六进制字符串作为参数,而不是字节数组。
byte[] MD5hash (byte[] data) {
   // This is one implementation of the abstract class MD5.
   MD5 md5 = new MD5CryptoServiceProvider();

   byte[] result = md5.ComputeHash(data);

   return result;
}