c# - Symfony2 (FOSUserBundle) SHA512 哈希与 C# SHA512 哈希不匹配

标签 c# asp.net symfony asp.net-mvc-4 fosuserbundle

我在我的网络应用程序(带有 FOSUserBundle 的 Symfony2)上创建了一个帐户,并使用密码“lolwut”(不带引号)注册。

这些是我的 security.yml 配置中的设置:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface:
            algorithm:   sha512
            iterations: 1
            encode_as_base64: false

结果数据:

Hashed password:
f57470574dbf29026821519b19539d1c2237e4315d881fa412da978af554740c6b284062a9a4af7d0295d18ebea8ef2e152cf674b283f792fe0b568a93f969cf
Salt:
kuc5bixg5u88s4k8ggss4osoksko0g8

现在,由于迭代设置为 1,我假设在 C# 中以 SHA512 编码“lolwut”会得到相同的结果,这是我的逻辑:

string salt = "kuc5bixg5u88s4k8ggss4osoksko0g8";
string input = "lolwut";
string passAndSalt = String.Concat(input, salt);

System.String Hashed = System.BitConverter.ToString(((System.Security.Cryptography.SHA512)new System.Security.Cryptography.SHA512Managed()).ComputeHash(System.Text.Encoding.ASCII.GetBytes(passAndSalt))).Replace("-", "");
return passAndSalt + "<br>" + Hashed;

但是,这会返回以下与 FOSUserBundle 散列密码完全不匹配的值:

82E8CA0408B23DB50EB654EDB50A7926AC73613184054DB82FB6D67CD4186B7A045D265AEDE6E3852CD85B981F15F6615C1C0C6FBF443B1672DF59DE23557BD9

我知道我一定是哪里做错了什么,但我终究无法弄清楚到底是什么,这让我抓狂。有谁能帮帮我吗?

最佳答案

Symfony 将 password 和 salt 合并为 password{salt},因此此代码将返回相同的散列:

  string salt = "kuc5bixg5u88s4k8ggss4osoksko0g8";
  string input = "lolwut";
  string passAndSalt = String.Format("{0}{{{1}}}", input, salt);

  System.String Hashed = System.BitConverter.ToString(((System.Security.Cryptography.SHA512)new System.Security.Cryptography.SHA512Managed()).ComputeHash(System.Text.Encoding.ASCII.GetBytes(passAndSalt))).Replace("-", "");
  // Hashed.ToLower()

关于c# - Symfony2 (FOSUserBundle) SHA512 哈希与 C# SHA512 哈希不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325341/

相关文章:

c# - Web 服务的 Web 异常

c# - Image.Save(..) 抛出 GDI+ 异常,因为内存流已关闭

java - 软件工程师应该游哪个技术海洋,Microsoft 还是 OpenSource/Linux/Java?

asp.net - 如何将控件呈现的 HTML 写入字符串

asp.net - firefox,jQuery ajax 调用触发两次并且从不触发成功或错误函数

mysql - symfony2 : Setting PdoSessionHandler correctly

c# - 编写直通类型关联的更好方法

ASP.NET DropDownList SelectedIndexChanged 事件未触发

Symfony2 phpunit 给出 503 错误

php - Symfony 升级到 3.3 服务参数错误