在c#中使用Rfc2898DeriveBytes在go中生成不同的密钥,并在pbkdf2中生成不同的密钥

时间:2018-06-22 07:36:41

标签: c# go

这是C#示例代码,用于验证哈希密码。

Salt大小为8,可生成随机字节,10000次迭代,Hash大小为20。

    public static bool VerifyHashedString(string inputString, string hashedString)
    {
        try
        {
            byte[] hashBytes = Convert.FromBase64String(hashedString);
            var salt = new byte[8];
            Array.Copy(hashBytes, 0, salt, 0, 8);

            var pbkdf2 = new Rfc2898DeriveBytes(inputString, salt, 10000);
            byte[] hash = pbkdf2.GetBytes(20);

            for (var i = 0; i < 20; i++)
            {
                if (hashBytes[i + 8] != hash[i])
                {
                    return false;
                }
            }
            return true;
        }
        catch
        {
            return false;
        }
    }

我正在使用以下代码在golang中进行验证-请找到链接 https://github.com/anaskhan96/go-password-encoder 但我无法匹配哈希文本

可能是什么原因?

以下是观察值哈希密码长度的变化。

在C#中KwLur0TzENvIVUmvTg0gqPUh + Jkndlu2bH7L8g ==

在Golang中KETc4Dp1kZzPC6pdePc5OQyDXLA =

0 个答案:

没有答案