인용 된 코드는 this answer이지만, 비슷한 코드는 거의 모든 곳에서 볼 수 있습니다. 을 허용하는 System.Security.Cryptography.HashAlgorithm.ComputeHash()
메서드 구현을 사용하여 C# 문자열 콘텐츠를 해시해야한다고 가정합니다. 일반적인 코드는 다음과 같습니다.해시 문자열 샘플에 Encoding.UTF8이 사용되는 이유는 무엇입니까?
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = MD5.Create(); // SHA1.Create()
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString));
}
문자열은 내부적으로 유니 코드로 저장됩니다.
Encoding.Unicode
대신 Encoding.UTF8
이 사용 된 이유는 무엇입니까?
죄송합니다. 그러나이 질문에 대한 객관적인 대답이 어떻게 존재 하는지를 알 수 없습니다. – Jon
@ 존 : "정말 감각이 없습니다"또는 "Encoding.Unicode를 사용하면 이러한 나쁜 일이 발생합니다"와 같은 것입니다. – sharptooth
해당 사항 없음. 그것은 임의적 인 선택입니다. 실제 선택 문제가있는 유일한 방법은 이러한 해시를 계산하는 * 모든 코드가 동일한 인코딩을 사용해야한다는 것입니다. 그렇지 않으면 분명히 동일한 입력을 서로 다른 값에 해시합니다. – Jon