2014-02-07 2 views
0

하나의 보수 연산자를 사용하여 텍스트 파일을 암호화하려고합니다.파일 암호화 혼동

import sys 
def encrypt(): 
    try: 
     fs=open('SOURCE.txt','r')    #normal file 
     ft=open('TARGET.txt','w')    #encrypted file 
    except: 
     print "File opening error!" 
     sys.exit(1) 
    while True: 
     ch=fs.read(1) 
     if not ch: 
      break 
     ft.write((ord(ch))^65535) 
    fs.close() 
    ft.close() 
encrypt() 

TypeError: expected a character buffer object 

왜, 그것은 그 오류를주고있다 :

코드는 아래와 같습니다? 그 어떤 해결책이라도? 당신은 전체 역 추적을 보면

답변

0

, 당신은 오류가 바로 여기

ft.write((ord(ch))^65535) 

write (예 : 문자열로) 문자 버퍼 오브젝트를 기대하고 있음을 볼 수 있지만, 당신은 int을 전달하고 있습니다.

그러나 바이트를 ASCII로 변환하기 때문에 str()을 사용할 수 없습니다. 이진 데이터로 쓰려면 bytearray()을 사용하십시오.

ft.write(bytearray([ord(ch)^0xff])) 
+0

당신이 옳았습니다. 나는 틀 렸습니다. – Vader