【发布时间】:2015-07-07 09:45:44
【问题描述】:
我在 c# 中使用 md5 哈希加密了一个字符串,并使用下面的代码将其存储到 mysql 数据库中。
function getMd5Hash(string md5)
{
string md5;
MD5 md5hash = new MD5CryptoServiceProvider();
md5hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(pass));
byte[] result = md5hash.Hash;
StringBuilder strbuilder = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
strbuilder.Append(result[i].ToString("x2"));
}
md5 = strbuilder.ToString();
}
//salt is ten random character
string pass = getMd5Hash(getMd5Hash("fermentasi")+salt);
现在,我如何在 PHP 中对相同的字符串进行散列处理以获取与我在 c# 中的函数的匹配值? 我一直在寻找,但到目前为止还没有找到解决方案。 感谢您的帮助,对不起我的英语不好:)
【问题讨论】:
-
请不要使用MD5加密,它不安全。
-
@Duenna 如果它只是用于计算文件或资源的 MD5 哈希值,那么就不会有盐值,因此这是一个合理的假设,用于加密。加上 ...ASCII.GetBytes(pass) 行指向密码。
-
@RonBeyer MD5 是一种散列算法,不用作加密的一部分。但作为更广泛的加密技术的一部分
-
@Anton,您可以发布您使用的实际代码吗?您在问题中的代码将无法编译并且不是有效的 C# 语法。重新生成哈希的方法是从数据库中读取盐值,再次生成哈希,并与存储的值进行比较。
-
@Duenna 我了解散列是什么,请参阅crackstation.net/hashing-security.htm,了解为什么不应该使用 MD5 来支持更好的功能,例如 SHA256。