2011-02-09 9 views
2

私はC#でRails Webアプリケーションを書き直しています。私は実際にRubyのハッシュ関数で立ち往生しています:RubyのSHA512.hexdigestをC#に変換するには?

private static string Hash(string password, string salt) 
{ 
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(password + ":" + salt))).Replace("-", "").ToLower(); 
} 

私が間違っているのは何:

# Generates a 128 character hash 
def Password.hash(password,salt) 
    Digest::SHA512.hexdigest("#{password}:#{salt}") 
end 

次のC#の機能は、異なる結果を与えますか?

ありがとうございました

+2

いずれの場合も結果はどのように見えるのですか? Rubyは実際にUTF-8を使用していますか? –

答えて

6

気にしないでください。実際に結果はです。と同じです。あなたは今までのC#にRubyのハッシュを変換する必要があるのであれば、

Digest::SHA512.hexdigest(some_string) 

BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(someString))).Replace("-", "").ToLower(); 
と同じC#が、より多くの冗長ですんが、主なものは、それが動作することです! :)

+0

素晴らしいです。同じことがPythonのそのいとこにも有効です。 – leon

関連する問題