2017-09-18 14 views
-2

PHPとC#のMD5とBase64関数に問題があります。私は磨き文字なしでハッシュ私の文字列をしようとすると、それは大丈夫だけど、私は磨き文字を使用すると異なる返されます。これをどうすれば解決できますか?PHPとC#でMD5とBase64を使用した異なるハッシュ

C#

MD5 md5 = MD5.Create(); 
string hash = Convert.ToBase64String(md5.ComputeHash(Encoding.ASCII.GetBytes(tbPassword.Text))); 

PHP

base64_encode(md5($string, true)); 
+3

私はC#のを知らないが、私は推測するだろう 'Encoding.ASCII.'はポリッシュ文字の問題を引き起こします。 – chris85

+1

問題を引き起こしているのではありませんが、MD5ハッシュをbase64でエンコーディングするのはどうしてですか? – iainn

+0

問題を再現する文字列を指定できますか? – apokryfos

答えて

0

あなたはASCIIを使用しているからです。 Encoding.UTF8を代わりに使用するか、拡張文字を許可するその他のエンコーディングを試してください。そしてもう一つは、パスワードにMD5を使わないでください。それは何年も安全ではないと考えられてきました。

+0

私はC#のコードを変更することはできません。私はPHPで何かする必要があります。 – niesuch

0

あなたは、PHPで同じエンコーディングを強制することができます(C#とPHPコードの両方で)ここに明らかな問題は、あなたが情報を失っているということであることを

base64_encode(md5(mb_convert_encoding($string,"ASCII"), true)); 

注意を。他の明白な問題は、あなたがパスワードであると思われるものについてMD5をやっているということです。それは悪い考えです。 http://sandbox.onlinephpfunctions.com/code/e21dd185093817217427b6cd4e58a223e6ca3b27

ここではC#の例です:

は、ここでPHPの例ですhttp://csharppad.com/gist/b26f07cbf9d53d809490e931e6cfbe1d

+0

これは機能しません。私は2つの異なるハッシュを持っています。私はMD5が悪い考えであることを知っていますが、私はこの関数のアルゴリズムを持つ古いプロジェクトに取り組んでいます。 – niesuch

+0

あなたが入力した元の入力を処理していますが、それは何のために失敗していますか? – apokryfos

関連する問題