code

md5 해시 바이트 배열을 문자열로 변환

codestyles 2020. 10. 31. 09:43
반응형

md5 해시 바이트 배열을 문자열로 변환


바이트 배열 인 해시 된 결과를 문자열로 어떻게 변환 할 수 있습니까?

byte[] bytePassword = Encoding.UTF8.GetBytes(password);

using (MD5 md5 = MD5.Create())
{
    byte[] byteHashedPassword = md5.ComputeHash(bytePassword);
} 

byteHashedPassword문자열 로 변환해야 합니다.


   public static string ToHex(this byte[] bytes, bool upperCase)
    {
        StringBuilder result = new StringBuilder(bytes.Length*2);

        for (int i = 0; i < bytes.Length; i++)
            result.Append(bytes[i].ToString(upperCase ? "X2" : "x2"));

        return result.ToString();
    }

그런 다음 확장 메서드로 호출 할 수 있습니다.

string hexString = byteArray.ToHex(false);

나는 항상 이것이 가장 편리하다는 것을 알았습니다.

string hashPassword = BitConverter.ToString(byteHashedPassword).Replace("-","");

이상한 이유로 BitConverter는 바이트 사이에 대시를 넣는 것을 좋아하므로 교체는 그냥 제거합니다.

업데이트 : "소문자"16 진수를 선호하는 경우 .ToLower () 및 붐을 수행하십시오.

이 작업을 긴밀한 루프로 수행하고 많은 작업을 수행하는 경우 적어도 두 개의 암시 적 문자열 캐스트 및 크기 조정이 진행되므로 비용이 많이들 수 있습니다.


및를 사용 Convert.ToBase64String하여 Convert.FromBase64String바이트 배열을 문자열로 쉽게 변환 할 수 있습니다 .


만약 당신이 'Hex preference'캠프에 있다면 이것을 할 수 있습니다. 이것은 기본적으로 Philippe Leybaert의 답변의 최소 버전입니다.

string.Concat(hash.Select(x => x.ToString("X2")))

B1DB2CC0BAEE67EA47CFAEDBF2D747DF


해시 일뿐 아니라 일반 문자열로 표시 할 수없는 값이있을 수 있으므로 Base64 인코딩 문자열로 변환하는 것이 가장 좋습니다.

string s = Convert.ToBase64String(bytes);

그리고 사용

byte[] bytes = Convert.FromBase64(s);

바이트를 다시 가져옵니다.


글쎄, 당신은 바이트와 인코딩을 취하는 문자열 생성자를 사용할 수 있지만, 많은 재미있는 문자 (널 바이트, 줄 바꿈, 제어 문자 등)를 포함 할 수 있기 때문에 문자열을 관리하기 어려울 것입니다.

이 작업을 수행하는 가장 좋은 방법은 작업하기 쉬운 멋진 문자열을 얻기 위해 base 64로 인코딩하는 것입니다.

string s = Convert.ToBase64String(bytes);

그리고 그 문자열에서 바이트 배열로 돌아가려면 :

byte[] bytes = Convert.FromBase64String(s);

내가 만든 Nuget 패키지에 관심이있는 사람이라면 CryptoStringify 라는 이름 으로 바이트 배열을 사용하지 않고도 깔끔한 구문을 사용하여 문자열을 해시 된 문자열로 변환 할 수 있습니다.

using (MD5 md5 = MD5.Create())
{
    string strHashedPassword = md5.Hash(password);
}

그것은에 확장 방법입니다 HashAlgorithmKeyedHashAlgorithm그래서 SHA1, HMACSHA1, SHA256 등도에서 작동합니다.

https://www.nuget.org/packages/cryptostringify

참고 URL : https://stackoverflow.com/questions/2435695/converting-a-md5-hash-byte-array-to-a-string

반응형