制作哈希的 md5 哈希

Posted

技术标签:

【中文标题】制作哈希的 md5 哈希【英文标题】:Making An md5 hash of hashes 【发布时间】:2014-03-02 12:10:04 【问题描述】:

我目前正在开发一个 C# 应用程序,该应用程序向 php 网络服务器发送请求,然后验证 mysql 连接。散列算法在服务器上,工作正常,但我希望在我的 C# 应用程序中使用相同的散列技术。 md5 哈希来自 ipBoard 论坛,这就是为什么它需要专门用于这个。以下是根据他们的说法:

"哈希是salt的md5总和与明文密码的md5总和的md5总和。用PHP代码表示,如下: $hash = md5( md5( $salt ) . md5( $password ) ); "

我只是不知道在 c# 中从哪里开始。感谢您的回复。

【问题讨论】:

那么您希望 PHP 脚本验证 C# 应用程序传递给它的 MySQL 连接字符串吗? 没有连接字符串是服务器端的。该应用程序正在传递用户名和密码。我想对密码进行哈希处理以防止中间人攻击。 【参考方案1】:

如果您只需要提供的 PHP 代码的快速移植版本:

// Create the MD5 hash object.
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create ();

string password = "password";
string salt = "salt";

// Hash password and salt
byte[] passwordHash = md5.ComputeHash (System.Text.Encoding.ASCII.GetBytes (password));
byte[] saltHash = md5.ComputeHash (System.Text.Encoding.ASCII.GetBytes (salt));

// Combine password and hash.
string passwordAndSalt = System.Text.Encoding.ASCII.GetString (passwordHash) + System.Text.Encoding.ASCII.GetString (saltHash);

// Compute final hash against the password and salt.
byte[] finalHash = md5.ComputeHash (System.Text.Encoding.ASCII.GetBytes (passwordAndSalt));

有关详细信息,请参阅 System.Security.Cryptography.MD5 文档。

【讨论】:

我要补充一点,提交者可以通过安全连接发送明文密码来避免这种复杂性。例如,如果 IP.Board 哈希算法将来发生变化,则需要修改此实现。

以上是关于制作哈希的 md5 哈希的主要内容,如果未能解决你的问题,请参考以下文章

良好的加密哈希函数 [重复]

加入两个哈希表来制作一个

php 简单的手工制作哈希功能

C - 为 int 三元组制作哈希函数

C# 中的 MD5 哈希与动作脚本中的 MD5 哈希不匹配

哈希算法之md5和sha1