Hay那里我试图在Windows手机中将字符串哈希到MD5 ...但是当我调用MD5类时我得到以下错误
找不到类型或命名空间名称“MD5”(你错过了吗?) 使用指令或汇编引用?)
PS:我使用过System.Security.Cryptography名称空间
那么如何在Windows手机中使用MD5哈希呢?
这是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
namespace FluoraPin
{
class HASHING
{
public static string GetMd5Hash(MD5 md5Hash, string input)
{
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
// t verify md5 hashing
private bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
{
// Hash the input.
string hashOfInput = GetMd5Hash(md5Hash, input);
// Create a StringComparer an compare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
if (0 == comparer.Compare(hashOfInput, hash))
{
return true;
}
else
{
return false;
}
}
}
}
答案 0 :(得分:2)
我认为答案是错误的:
找不到类型或命名空间名称“MD5”(您是否缺少using指令或程序集引用?)
MD5
不是Windows Phone System.Security.Cryptography
命名空间中的类。请参阅MSDN's System.Security.Cryptography
page for Windows Phone进行确认。
将此与MSDN's general System.Security.Cryptography
page,对比,SHA-256将MD5
列为命名空间中的一个类。
说完这个之后,你应该使用answer to a related SO question或更高版本而不是MD5或SHA-1哈希。
SHA-256哈希可用于Windows Phone 7和8,通过SHA256Managed
类 - 在您已使用的Security.Security.Cryptography
命名空间中。有关如何使用SHA256Managed
的示例,请参阅{{3}}。
答案 1 :(得分:2)
此人在C#中实现了MD5散列,可用于WP8:
http://upadhyayjitesh.blogspot.com/2013/01/windows-phone-md5-hash-conversion.html
答案 2 :(得分:0)
您可以将Bouncy Castle作为NuGet包添加到您的项目中。它支持MD5散列(以及更多加密算法)。有关详细信息,请参阅其NuGet页面。或其项目页面“The Legion of the Bouncy Castle”
答案 3 :(得分:-4)
我没有测试过您的解决方案,但我找到了一个适合我的解决方案。
using System.Security.Cryptography;
class MD5Hash
{
public String getHash(String input)
{
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
sb.Append(hash[i].ToString("x2"));
return sb.ToString();
}
public Boolean VerifyHash(String input, String hash)
{
String hashOfInput = getHash(input);
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
if (0 == comparer.Compare(hashOfInput, hash))
return true;
else
return false;
}
}
这将散列你的String,完全没有错误。
此外,您收到的错误,请检查您是否正在编译包含“客户端配置文件”文本的.Net版本。
我是新手,所以如果我完全错了,那么我很抱歉,你可以对你提出更具体的问题。