2014-12-28 5 views
1

블록 암호를 사용하여 텍스트를 암호화하고 암호 해독 할 수있는 python 스크립트를 작성하려고하지만 완전히 공백 출력이 계속됩니다. 문제의 원인을 추적하려고 시도한 후에 XOR 비트 연산 (a^b)을 수행 한 후 스크립트에서 새 ASCII 값을 문자로 변환 할 수 없음을 알았습니다. rawkeylist 각 캐릭터 (십진수) ASCII 값의리스트로 변환하여 원래의 키이다블록 암호 Python unichr() 출력 형식 문제

def blockcrypt(text,key): 
    rawkeylist = rawintkey(key) 
    textlist = asciitextlist(text) 
    answer='' 
    kli = 0 
    for element in textlist: 
     answer+=str(unichr(element^rawkeylist[kli])) 
     kli+=1 
     if kli==len(rawkeylist): 
      kli=kli%len(rawkeylist) 
    return answer 

. 그리고 textlist는 각 문자에 대한 10 진수 ascii 값 목록으로 변환 된 텍스트입니다. 나는 이미 올바른 목록을 출력하고 있음을 확인하기 위해 인쇄물을 사용했습니다.

문제는 몇 가지 입력에 대한 답변을 시도하지 않은 시도입니다. 더 중요한 것은, print를 여러 장소로 대체함으로써 str (unichr (element^rawkeylist [kli])) 이 unichr에 대한 연구를 수행 한 후에 아무 것도 출력하지 않고 있다는 사실을 발견했다. _____ 무엇을위한 자리 표시 자 역할을 함).

필자의 ASCII 값을 문자로 다시 변환 할 수는 없지만 가장 혁신적인 솔루션처럼 보이지는 않습니다. 또한 문자열을 사용하여 내 대답에 추가하는 것이 효과적인지 매우 의심 스럽습니다. 마지막으로, 나는 암호를 적용 할 때 내 열쇠의 문자를 통해 단순히 재활용하고 일부 연구를 한 후에 나는 내가 사용해야한다고 생각하는 패딩이라는 것을 들어 봤다.

음, 제가 추측하는 데 도움주세요.

+0

특정 문제에 집중하면 도움을받을 가능성이 더 큽니다 (이 경우에는 지금은 덧씌우기에 대해 걱정하지 마십시오). 원하는 행동을 정확하게 알려주십시오. –

+0

어떤 블록 암호입니까? 완전히 불안한 반복 된 키가있는 One Time Pad (OTP)처럼 보입니다. –

답변

0

암호문을 바이트로 처리하거나 (예 : 바이너리 파일을 저장하거나 HTTP를 통해 바이너리 데이터를 보낼 수 있음) 기본 64 또는 16 진수 인코딩을 사용하여 텍스트로 인코딩 할 수 있습니다. 암호 해독 전에 문자열을 다시 이진 암호문으로 디코딩해야합니다.