Web アプリ (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
どこかで何か間違ったことをしているに違いないことはわかっていますが、それが何であるかを一生理解することはできず、気が狂いそうになります。誰か助けてくれませんか?