나의 기록, 현진록

[Python] 암호수학 카이사르(시져)암호 복호화하기 본문

Programming/Algorithm & Data Structure

[Python] 암호수학 카이사르(시져)암호 복호화하기

guswlsdk 2017. 6. 27. 20:36
반응형

카이사르(시져) 암호로 암호화된 문장을 복호화 시켜 평문을 찾아보자.

 

평문 : Ask again later.

암호문 : Hzr hnhpu shaly.

 

위와 같은 평문과 암호문을 예로 들면 실행화면은 다음과 같다.

 

 

 

 

7번 째 줄에서 평문과 암호화 키를 찾을 수 있다.

 

 

 

 

 

코드

 

 

# 복호화 함수 구현

def decoding (encode_str, n):        # 암호화문, 암호키

    

    decode_str=""

    

    for i in encode_str:         # D_str의 글자수만큼 반복 (D_str의 문자열에서 한글자 참조할 수 있음)

        

        if (ord(i)>=65 and ord(i)<=90):      # 대문자일 경우

            if(ord(i)-n < 65):      # 대문자 아스키코드 범위를 벗어날 때(65미만)

                x=chr(ord(i)+(26-n))

            else:

                x=chr(ord(i)-n)                  



            decode_str+=x



        elif (ord(i)>= 97 and ord(i) <= 122): # 소문자일 경우

            if(ord(i)-n < 97):      #소문자 아스키코드 범위를 벗어날 때(97미만)

                x=chr(ord(i)+(26-n)) 

            else:

                x=chr(ord(i)-n)                 



            decode_str+=x

            

        else:       #소문자 또는  대문자가 아닐 경우

            

            decode_str+=i



    return decode_str

#=========================================================================







text=input("암호문을 입력하시오.")



for i in range(1,26):



    print(str(i) + "," + "=> " + decoding(text,i)+" 암호키= "+str(i))

 

반응형