2014-01-19 7 views
1

저는 텍스트를 암호화하고 System.Security.Cryptography.Rijndael을 사용하여 텍스트 상자에 결과를 표시하는 C# 응용 프로그램을 작성하므로 수신기가 결과를 복사하고 동일한 키를 사용하여 암호를 해독합니다.바이트에서 문자열로 변환 할 수 없습니다.

EncryptStringToBytes 함수에 의해 반환 된 암호화 된 텍스트를 []에서 textBox에 표시 할 수있는 문자열로 변환 할 때 문제가 발생합니다.이 문자열은 나중에 복사하고 해독 할 수 있습니다.

아래의 변환 방법을 사용했지만 나중에 암호 해독에 사용할 수있는 의미있는 문자열을 표시 할 수 없으며 이전에 EncryptStringToBytes에서 반환 된 원래의 바이트 모양으로 다시 변환 할 수 있습니다. 문자열로 변환

textBox3.Text = Encoding.Default.GetString(encryptionResult) 

바이트 텍스트 박스에서 복사 : 텍스트 박스에 디스플레이되기 위해

[]를 문자열로 바이트로 변환 :

아래는 변환을 수행하는데 사용되는 방법이다

byte[] textToByte = Encoding.Default.GetBytes(textToDecrypt) 
+1

이진 순서에서 의미있는 텍스트를 얻을 수있는 가장 쉬운 방법은 [ "hexstring"] (HTTP를 사용하는 것입니다. com/questions/623104/byte-to-hex-string), 즉 "87160a20a03daec4adc1934"및 유사합니다. 인코더를 사용하여 실제 텍스트를 얻으면 쉽게 표현할 수없는 바이너리 시퀀스에 문제가 발생합니다. – bzlm

답변

4

당신은 인코딩 및 디코딩을 시도해야한다 : [] 순서로지고 복호화 프로세스를 완료하기 위해 DecryptStringFromBytes에 인수로 확인할 수 있습니다 64 인코딩. 클래스 변환 사용. 당신은 여전히 ​​인코딩을 사용하려면

textBox3.Text =Convert.ToBase64String(encryptionResult) 

byte[] textToByte = Convert.FromBase64String(textToDecrypt); 

선택 : // 유래 :

string decodedString = Encoding.UTF8.GetString(textToDecrypt); 
관련 문제