일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정렬 알고리즘
- 두근두근 자료구조
- HTML
- windosws wbcs
- 시간복잡도
- Stack
- 암호수학
- PHP
- 스택
- LoB
- System
- 재귀
- c언어
- OSI
- windosw 문자열
- SWiFT
- 백준
- level13
- ftz level13
- 파일 시스템
- ftz
- 큐
- 미로 탐색 알고리즘
- pwnable.kr
- Java
- 자료구조
- web
- 파이썬
- C
- War Game
Archives
- Today
- Total
나의 기록, 현진록
[Python] 암호수학 카이사르(시져)암호 복호화하기 본문
반응형
카이사르(시져) 암호로 암호화된 문장을 복호화 시켜 평문을 찾아보자.
평문 : 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))
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[C] <BAEKJOON> 백준 1009번: 분산처리 (0) | 2017.07.02 |
---|---|
[C] <BAEKJOON> 백준 1002번: 터렛 (0) | 2017.06.30 |
[C] <BAEKJOON> 백준 1065번: 한수 (0) | 2017.06.27 |
[C] <BAEKJOON > 백준 4673번: 셀프 넘버 (0) | 2017.06.27 |
[Python] 암호수학 카이사르 암호(시저 암호) 방식의 복호화 (0) | 2017.06.05 |