2009-12-12 3 views
-1
private static string GetSHA512(string strPlain) 
{ 
    UnicodeEncoding UE = new UnicodeEncoding(); 
    byte[] HashValue, MessageBytes = UE.GetBytes(strPlain); 
    SHA512Managed SHhash = new SHA512Managed(); 
    string strHex = ""; 

     HashValue = SHhash.ComputeHash(MessageBytes); 

     foreach (byte b in HashValue) 
     { 
      strHex += String.Format("{0:x2}", b); 
      //strHex += b.ToString(); 
     } 
     int len = strHex.Length; 

     //********This strHex of length 128 characters is to be converted to binary 
     // (actually 512 bit output in binary is required.)**********/ 
} 

아무도 도움을받을 수 있는지 확인하십시오.길이 128의 16 진수로 C에서 이진수로 변환됩니다.

+0

질문은 ...? – tinkertime

+0

바이트 배열을 기본 2의 문자열로 나타내는 방법을 묻는 것으로 가정합니다. –

+1

은 이것과 같은 질문이 아닙니다. http://stackoverflow.com/questions/1892547/sorry-guys-its-hex- 128-length-of-be-converted-to-c-binary-in-c –

답변

-1

:

byte b = 123; 
string s = Convert.ToString(b, 2); // second argument is base 
Console.WriteLine(s); // prints '1111011' 

이제 바이트 배열을 탐색하여 바이트 단위로 문자열을 만듭니다.

1

당신이 정말로 이진 문자열 표현으로 해시의 16 진수 문자열 표현을 변환 할 경우 : 당신이 기본-2 표현 문자열로 바이트 배열을 변환하는 방법을 요구하고 가정

int len = strHex.Length; 
StringBuilder sb = new StringBuilder(""); 
for (int i = 0; i < len; i++) 
{ 
    sb.Append(Convert.ToString(Convert.ToByte(strHex.Substring(i, 1), 16), 2).PadLeft(4, '0')); 
} 
관련 문제