gpt4 book ai didi

C# MD5 哈希需要匹配 PHP MD5 哈希(加盐)

转载 作者:行者123 更新时间:2023-11-30 22:14:34 26 4
gpt4 key购买 nike

我有一个字符串需要在 C# 中使用 salt 进行哈希处理并匹配它在 PHP 中的结果。 C#代码如下:

        string stringToHash = "123";
string saltToUse = "321";
byte[] stringBytes = ASCIIEncoding.ASCII.GetBytes(stringToHash);
byte[] saltBytes = ASCIIEncoding.ASCII.GetBytes(saltToUse);

var hmacMD5 = new HMACMD5(saltBytes);
var saltedHash = hmacMD5.ComputeHash(stringBytes);
byte[] hashedBytesNoSalt = MD5CryptoServiceProvider.Create().ComputeHash(stringBytes);

string hashedString = BitConverter.ToString(hashedBytesNoSalt).Replace("-", "").ToLower();
string saltedString = BitConverter.ToString(saltedHash).Replace("-", "").ToLower();

用于测试 C# 是否正确输出的 PHP 代码是:

<?php echo md5('123'.'321'); ?>

C# 输出正确的 UNSALTED MD5 哈希值,即 202cb962ac59075b964b07152d234b70。但是,当我尝试使用 C# 加盐时,我得到 900011ae860f471561023fba6cc25df6,而使用 PHP,我得到 c8837b23ff8aaa8a2dde915473ce0991。

我不确定为什么要这样做,或者这是否是正确的方法。要记住的是 C# 需要输出到 PHP 输出到的内容。

最佳答案

C# 代码使用了比 PHP 代码更好的加盐机制。要匹配 PHP,您需要做的就是在 stringToHash + saltToUse 上运行 MD5,而不是使用 HMACMD5 的关键功能。简而言之,完全按照您在 C# 中生成未加盐 MD5 所做的操作,但改为传入 stringToHash + saltToUse

关于C# MD5 哈希需要匹配 PHP MD5 哈希(加盐),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com