windowsphone 8中的MD5哈希

时间:2014-02-23 02:09:11

标签: c# hash windows-phone md5

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;
            }
        }
    }
}

4 个答案:

答案 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-256MD5列为命名空间中的一个类。

说完这个之后,你应该使用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版本。

我是新手,所以如果我完全错了,那么我很抱歉,你可以对你提出更具体的问题。