2012-10-22 113 views
-4

所以我有一个网站,我的游戏盐和MD5在C#

这是我使用的PHP的发力。

$Login = strtolower(trim($Login)); 
$Pass = strtolower(trim($Pass)); 
$Repass = strtolower(trim($Repass)); 

$Salt = $Login.$Pass; 
$Salt = md5($Salt); 
$Salt = "0x".$Salt; 

但现在我面对的是我似乎无法制定出一个问题。我需要能够做到通过C#的WinForms这种加密对客户端启动(注册,玩游戏等等等等)

对我的生活中,我无法弄清楚如何使相同的二进制,因为它使在PHP。

我曾尝试加载,但只是不能破解它。

非常感谢,如果你能帮助

+2

这并不似乎是一个正确使用‘盐’或‘加密’的期待。 – 2012-10-22 17:05:07

+3

[我Google和在三秒钟内,我发现一个答案(http://www.spiration.co.uk/post/1203/MD5-in-C%23---works-like-php-md5() - 例)。 –

+0

除非您告诉它,否则md5()不会返回二进制文件。它返回的MD5哈希 –

回答

2

虽然你的示例代码混淆了实际的问题,我想我对您的实际问题的解决方案。

我已经与md5() medthod同样的问题,将一些PHP代码到C#而回。这是我想出的:

private static string CalculateChecksum(string inputString) 
{ 
    var md5 = new MD5CryptoServiceProvider(); 
    var hashbytes = md5.ComputeHash(Encoding.UTF8.GetBytes(inputString)); 
    var hashstring = ""; 
    foreach(var hashbyte in hashbytes) 
     hashstring += hashbyte.ToString("x2"); 

    return hashstring; 
} 

可能有一个更简洁的解决方案,但有一个适合我的工作,当时我匆忙。

无论如何,它给你的字符串像A48EDF06 ...,你会从phpmd5()