c# - 如何从 SQL Server 中的 C# 函数重新创建 MD5 哈希
问题描述
我正在为遗留代码库和一个 MD5 函数(下面共享)而苦苦挣扎,该函数返回一个我无法通过 SQL Server 以任何方式重新创建的值,尽管使用了HASHBYTES
Base64 编码或其他策略。
我们的 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 函数返回的内容。
解决方案
测试一下:希望它有助于 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;
}
}
推荐阅读
- python - 如何使用opencv拼接多个图像?
- django - Django rest 框架:远程用户在中间件中不可用 - 仅在视图中
- node.js - 将检索到的数据从 MongoDB 插入到 vue 脚本行数组中的数组中
- java - 如何在 5 秒后处理 jframe 并打开下一个 jframe
- sqlite - SQLite - 每天将 .csv 数据导入数据库
- python - 将 toolz.pipe 与方法一起使用
- c++ - 仅对 if 语句使用循环,然后打印 else 语句
- ios - iPhone模拟器的Apple M1问题
- python - 无法上传和显示 django 表单
- c# - 右对齐自定义货币datagridview