2017-09-21 11 views
-1

と一致していません:PHPでPHP MD5の出力は、私はそうのようなパスワードのハッシュ化されたMD5値取得しようとしているC#でC#MD5出力

string sb = textBox2.Text; 
      byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(sb); 
      byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); 
      string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); 
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(sb); 
      sb = System.Convert.ToBase64String(plainTextBytes); 

を私はMD5コマンドを使用して、その値を取得し、

echo md5("megusia94"); 

いずれの場合も、入力が同じで、 はまだPHPでの出力は次のようになります。d1e44ad921daadaf8defadcd21c8644a C#で出力されている間、私は、Dだ何bWVndXMpYTk0

間違っていますか?私はこのフォーラムを検索して試してみた: MD5 hashing does not match in C# and PHP c# md5 and php md5 not match

+0

** [MD5パスワードハッシュ](http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)**は使用しないでください。パスワードのセキュリティを処理するために( ')(' password_hash() 'と' password_verify)(http://jayblanchard.net/proper_password_hashing_with_PHP.html)** PHPの[組み込み関数]を使用してください**。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 **ハッシュする前に[パスワードをエスケープする](http://stackoverflow.com/q/36628418/1011527)必要はありません。また、他のクレンジングメカニズムを使用することもできます。 – GrumpyCrouton

+0

これはhttps://stackoverflow.com/q/5821677/1415724 –

+0

フレッドと重複しているようだ、私は上記の投稿それも... – pokrak94

答えて

2

あなたが同じ2つのものを比較していません。 あなたが比較しているのは、ASCIIエンコードされた入力文字列のbase64表現で、PHPの実際のMD5ハッシュ(16進表現)です。

代わりにこれを見て:

byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes("megusia94"); 
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); 
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); 
Console.WriteLine(hashedString); 

それは正しくあなたがPHPから取得したものと同じであるハッシュd1e44ad921daadaf8defadcd21c8644aを生産しています。

+0

これはありがとうございました。私はそれをリフレッシュしようとしている私のC#のスキルで少し錆びています。この言語で書かれた私の最後の出願から何年ものことでした。 – pokrak94

+0

@ pokrak94問題ありません。 GrumpyCroutonのアドバイスに注意してください。また、セキュリティ関連の設定でこのハッシュスキームを使用しないでください;-)それはちょうど非常に欠陥があります。 – Jens

+0

これは私がすでにphpのバージョンを持っているホームアプリケーション用で、現在はC#でも同じです。練習のためだけに、それを公開するつもりはありません。ありがとう! – pokrak94

-1

PHPのMD5:

  • は、32文字の16進数としてのハッシュを返します。

あなたのC#コード:

  • はbase64エンコーディングとのハッシュを返します。
関連する問題