首页 > 解决方案 > 如何从 SQL Server 中的 C# 函数重新创建 MD5 哈希

问题描述

我正在为遗留代码库和一个 MD5 函数(下面共享)而苦苦挣扎,该函数返回一个我无法通过 SQL Server 以任何方式重新创建的值,尽管使用了HASHBYTESBase64 编码或其他策略。

我们的 MD5 C# 函数:

public string Md5(string value)
{
    CryptographyManager crypto = EnterpriseLibraryContainer.Current.GetInstance<CryptographyManager>();

    //byte[] valueToHash = (new UnicodeEncoding()).GetBytes(value);
    string generatedHash = crypto.CreateHash("MD5CryptoServiceProvider", value);

    // Clear the byte array memory.
    //Array.Clear(valueToHash, 0, valueToHash.Length);

    return generatedHash;
}

当我通过 C# 中的 MD5 函数运行单词“测试”时,它返回以下内容:

RTYSPVSIIGNYx5++zd8EfNwYAONmPWZnsKaYiQHBCP8=

这不是标准的 Base64 编码,我无法找到在 SQL 中为关联项目重新创建它的方法。

请帮助我了解上面的 MD5 函数返回的内容。

标签: c#asp.netsql-server

解决方案


测试一下:希望它有助于 MD5 哈希和 Base64 编码

public static string MD5(this string normal)
        {
            byte[] textBytes = System.Text.Encoding.UTF8.GetBytes(normal);
            try
            {
                System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
                cryptHandler = new System.Security.Cryptography.MD5CryptoServiceProvider();
                byte[] hash = cryptHandler.ComputeHash(textBytes);
                string ret = "";
                foreach (byte a in hash)
                {
                    if (a < 16)
                        ret += "0" + a.ToString("x");
                    else
                        ret += a.ToString("x");
                }
                return ret;
            }
            catch
            {
                throw;
            }
        }

推荐阅读