比较散列密码的正确方法

时间:2018-04-26 09:00:22

标签: c# sql-server wpf

我的数据库中有一个字段,它是二进制(32),用于存储SHA-256密码。由于MSSQL以大写形式存储散列并使用0x前缀,我已经这样做了:

public static string getHashSha256(string text)
    {
        byte[] bytes = Encoding.UTF8.GetBytes(text);
        SHA256Managed hashstring = new SHA256Managed();
        byte[] hash = hashstring.ComputeHash(bytes);
        string hashString = string.Empty;
        foreach (byte x in hash)
        {
            hashString += String.Format("{0:x2}",  x);
        }
        return "0x" + hashString.ToUpper();
    }

这是可以接受的还是有更合适的方法来做到这一点?

1 个答案:

答案 0 :(得分:-1)

public static string ConvertToHash(string dataToComputeHash)
    {
        var hash = "";
        try
        {
            var keyByte = encoding.GetBytes(key);
            using (var hmacsha256 = new HMACSHA256(keyByte))
            {
                hmacsha256.ComputeHash(encoding.GetBytes(dataToComputeHash));
                hash = ByteToString(hmacsha256.Hash);
            }
        }
        catch (Exception ex)
        {

        }
        return hash;
    }