2013-10-29 6 views
1

암호화 된 텍스트가있는 텍스트 파일이 있습니다. 예를 들면 :유니 코드 문자열 문제

휗 ✹➂ 鳄 ⅅⵘ 械 뱥 間 뒝 贍 ꤦ 掁 ☞ೇ

쎠 ԠƳ ᒸ 略 ⱉ 㾤 歓 ر 㗋 鲔  \ ud953

지금이 하나의 암호를 해독 할 . 코드는 다음과 같습니다.

var lines = File.ReadLines("input.txt"); 
List<string> DecList = new List<string>(); 
foreach(var line in toDecList) 
{ 
    string decrypted = Decrypt(@line); 
    DecList.Add(decrypted);    
} 

File.WriteAllLines("output.txt", toEncList); 

첫 번째 예에서는 오류가 표시되지 않습니다. 두 번째로는 암호화 예외가 있습니다. 파일의 텍스트를 클립 보드에 복사하여 코드에 직접 붙여 넣으면 오류가 없습니다.

그래서 인코딩 문제가 있다고 생각합니다. 나는 또한 그것을 시도했다

var lines = File.ReadLines("input.txt", Encoding.Unicode); 

그러나 같은 문제가 발생합니다.

누구에게 아이디어가 있습니까?

+0

당신이 암호화 된 파일의 오른쪽 라인 엔딩을 발견하고 있는지 위치 :

encryptedBytes <- encrypt(plaintext, password) storableString <- base64(encryptedBytes) DB.store(storableString) 

은 다음에? 암호화 된 코드 부분은 암호화 된 데이터에 속한 암호화 된 문자열 안에 줄 끝이있을 수 있습니다. – PMF

+0

@ 로이 나미르 왜? 나는 그것을 읽을 수 없다.) 그러나 진지한 무엇이 당신이 거기에 정확하게 오는 예외입니까? – Tafari

+0

'File.ReadLines (문자열 경로, 인코딩 인코딩)'을 사용하고 파일에있는 인코딩을 전달하십시오. – helb

답변

0

텍스트를 바이트와 별도로 유지해야합니다. 텍스트는 항상 일부 알파벳 또는 기타로 읽을 수있는 텍스트를 나타냅니다. 암호화 된 텍스트는 바이트 스트림입니다. 두 가지를 섞으면 문제가 발생할 것입니다. 예를 들어, UTF-8 텍스트는 특정 바이트 조합을 포함하지 않을 수 있지만 해당 바이트는 바이트 스트림에서 발생할 수 있습니다.

코드는 인코딩 된 바이트를 문자열로 처리합니다. 이것은 근본적인 오류이며 문제를 일으킬 것입니다. 암호화 된 바이트를 텍스트로 저장하려면 저장을 위해 바이트를 텍스트 형식 (예 : Base64)으로 변환해야합니다. 그런 다음 해독하기 전에 Base64 텍스트를 다시 바이트로 변환해야합니다. 같은

뭔가 :

b64Cyphertext <- DB.retrieve() 
cypherbytes <- 46esab(b64Cyphertext) 
decryptedText <- decrypt(cypherbytes, password)