문제

나는 어떻게 변환하는 해시된 그 결과,바이트 배열,문자열?

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 바이트 어레이를 문자열로 쉽게 변환합니다.

당신이 '16 진수 선호도'캠프에 있다면 이것을 할 수 있습니다. 이것은 기본적으로 Philippe Leybaert의 최소한의 답변입니다.

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

B1DB2CC0BAEE67EA47CFAEDBF2D747DF

해시 일뿐 아니라 일반 문자열로 표시 될 수없는 값이 있으므로 가장 좋은 방법은 Base64 인코딩 된 문자열로 변환하는 것입니다.

string s = Convert.ToBase64String(bytes);

그리고 사용

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

바이트를 되 찾으려면.

잘 사용할 수 있습니다 문자열을 생성하는 바이트하고 인코딩을,하지만 당신은 가능성이 얻을 관리하기 어려운 문자열을 수 있었기 때문에 많은 재미있는 캐릭터(null 바이트를,개행 문자,제어,문자,등등)

은 작업을 수행하는 가장 좋은 방법이 될 것이 인코딩을 가진 기본 64 하는 문자열의 작업을 쉽게:

string s = Convert.ToBase64String(bytes);

고에서 이동하는 문자열에 다시 바이트 배열:

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

내가 만든 Nuget 패키지에 관심이있는 사람이라면 누구나 전화했습니다 cryptostringify 바이트 어레이를 사용하지 않고 멋진 깨끗한 구문을 사용하여 문자열을 해시 문자열로 변환 할 수 있습니다.

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

확장 방법입니다 HashAlgorithm 그리고 KeyedHashAlgorithm SHA1, HMACSHA1, SHA256 등에서도 작동합니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top