我对c#相当陌生,但是我正在构建一个访问Marvel的控制台应用程序,我需要为这个API调用生成一个MD5哈希。经过大量研究,我发现您可以使用System.Security.Cryptography名称空间或Windows.Security.Cryptography.Core命名空间来生成哈希。我目前正尝试使用System.Security.Cryptography命名空间,如下所示:
public string Hash(string data)
{
MD5 md5 = MD5.Create();
byte[] toBeHashedBytes = Encoding.ASCII.GetBytes(data);
byte[] hash = md5.ComputeHash(toBeHashedBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString());
}
return sb.ToString();
}然而,从此方法生成的散列在传递给惊奇API时无效。我试图使用Windows.Security.Cryptography.Core命名空间,但似乎找不到需要什么引用。我只是需要添加一个引用,还是需要先下载一个程序集?
我正在使用Windows 10和Visual 2017
发布于 2017-04-21 02:55:06
基本问题是,您将字节组合在基10中,而不是十六进制。修正附加行如下:
sb.Append(hash[i].ToString("x2"));然后,该方法给出输入“1 for 1234”的正确值。
ffd275c5130566a2916217b101f26150
正如他们在文档中所描述的那样。
发布于 2017-04-21 02:54:02
Windows.Security.Cryptography.Core是UWP或Windows的命名空间,不是控制台应用程序的名称空间。您不能在控制台应用程序中使用它。
https://stackoverflow.com/questions/43533056
复制相似问题