이번 포스팅에서는 시저 암호에 대해 다뤄보고자 합니다.
시저 암호(Caesar cipher)
시저 암호(Caesar cipher) 또는 카이사르 암호는 암호학에서 다루는 간단한 치환암호의 일종이다.
실제로 로마의 황제 카이사르는 이 카이사르 암호를 사용하기도 했다. 카이사르 암호는 암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식이다. 예를 들어 3글자씩 밀어내는 카이사르 암호로 'COME TO ROME'을 암호화하면 'FRPH WR URPH'가 된다.
카이사르 암호는 약 기원전 100년경에 만들어져 로마의 장군인 카이사르가 동맹군들과 소통하기 위해 만든 암호이다.
시저 암호는 암호학에서 다루는 간단한 치환암호입니다. 암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식입니다.
시저암호
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12926
시저암호
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/155652
def decode(str_list, e, n):
idx = (str_list.index(e)+n) % len(str_list)
return str_list[idx]
import string
def solution(s, n):
return ''.join(list(map(lambda x: decode(string.ascii_lowercase. x, 5), s)))
알파벳을 5만큼 민 경우
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | a | b | c | d | e |
solution("cvkkt", 5) # 결과: "happy"
알파벳 사용시에는 아래와 같이 암호 리스트를 정의하면 됩니다.
# string 모듈 사용시
import string
string.ascii_letters # 결과: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
string.ascii_lowercase # 결과: abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase # 결과: ABCDEFGHIJKLMNOPQRSTUVWXYZ
# string 모듈 미사용시
lower = 'abcdefghijklmnopqrstuvwxyz'
upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'