2011-02-09 3 views
2

C#에서 Rails 웹 앱을 다시 작성하고 있습니다. 난 정말 루비의 해시 함수와 함께 붙어있어 :루비의 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

각각의 경우 결과는 어떻게됩니까? 루비는 실제로 UTF-8을 사용합니까? –

답변

6

신경 쓰지 마세요. 결과는 실제로 ARE 동일합니다. 그래서 혹시 C 번호에 루비의 해시를 변환해야하는 경우,

Digest::SHA512.hexdigest(some_string) 

BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(someString))).Replace("-", "").ToLower(); 

C 번호는 훨씬 더 장황

같은 않지만, 중요한 것은 그것이 작동한다는 것입니다! :)

+0

굉장합니다. 파이썬에서 사촌에게도 똑같이 적용됩니다. – leon