웹 문제를 풀다보면 기본적인 치환암호를 푸는 문제가 종종 나온다.


그래서 단순 문자에 대한 치환암호를 복호화 하는 코드를 짰다.


문자를 1대1 대응시켜서 변환시키는 파이썬 라이브러리도 있는데 그건 여기를 참고하자.


우선 아래는 암호화된 문자열을 받아서 모든 경우의 수를 계산해 출력해주는 코드다.


def decode(strings):
        for i in range(0, 26):
                key = ""
                for string in strings:
                        ascii_str = ord(string)
                        if (ascii_str > 64 and ascii_str < 91):
                                if (ascii_str+i) > 90:
                                        ret_val = 64 + ((ascii_str+i)-90)
                                else:
                                        ret_val = ascii_str + i
                        elif (ascii_str > 96 and ascii_str < 123):
                                if (ascii_str+i) > 122:
                                        ret_val = 96 + ((ascii_str+i)-122)
                                else:
                                        ret_val = ascii_str + i
                        else:
                                ret_val = ascii_str
                        key += chr(ret_val)
                print "[+] {} : {}".format(i, key)

def main():
        incoded_flag = "ABCDE" # 치환된 문자열
        decode(incoded_flag)

if __name__ == "__main__":
        main()


'Language > python' 카테고리의 다른 글

[python] 동적 import  (0) 2018.02.11
[python] z3 설치  (0) 2018.02.10
[python] try, finally  (0) 2017.11.18
python 코드 잘 짜는 방법  (0) 2017.08.21
[python] 리스트 안에 있는 중복된 값 개수 구하기  (2) 2017.07.13

+ Recent posts