반응형
파이썬으로 Caesar 암호화 구현하기
#파이썬으로 숫자 입력 받아 카이사르(시저) 암호화 구현하기!
안녕하세요. 오랜만에 파이썬 관련 글을 쓰게 되는 것 같네요!
아 요즘 게을러져서... ; )
오늘은 파이썬을 통해 Caesar 암호화를 구현해보려고 합니다.
Caesar 암호화는 특정 수 만큼 문자열을 Shift 시켜 원래의 문자열을 제대로 알아 볼 수 없게 하는 것인데요.
시저 암호화의 자세한 내용은 아래 URL을 통해 확인하시기 바랄게요!
en.wikipedia.org/wiki/Caesar_cipher
[ 같이 읽으면 좋은 글들 ↓ ]
그럼, 먼저 Caesar cipher 함수를 구현해볼게요.
입력 값은, Shift할 수 n과 암호화 할 문자열 plainString 2가지 입니다.
def encrypt(plainString, n):
result = ""
for i in range(len(plainString)):
char = plainString[i]
if (char.isspace()):
result += " "
else:
if (char.isupper()):
result += chr((ord(char) + n - 65) % 26 + 65)
else:
result += chr((ord(char) + n - 97) % 26 + 97)
return result
그럼 위에 구현한 함수에 맞게 호출하는 부분을 완성해볼게요.
Shift하는 수는 사용자가 입력한 수로 할게요.
def main():
number = int(input("Input Number > "))
print(encrypt("This is Test String", number))
if __name__ == "__main__":
main()
자! 그럼 코드는 완성된 것 같네요.
그럼 테스트로 실행시켜 보겠습니다.
Input Number > 3
Wklv lv Whvw Vwulqj
3을 입력하니까, 바로 "This is Test String"이 문자열이 암호화되서 출력되네요.
신기하죠?
5를 입력해볼까요?
Input Number > 5
Ymnx nx Yjxy Xywnsl
5를 입력했니 또 다른 문자열이 출력되네요.
하하.
그럼 다음시간에는 해당 Encrypt 함수를 Decrypt하는 함수도 구현해보도록 하겠습니다!
아래에 전체 코드 공유하면서 저는 이만 물러갈게요!
def encrypt(plainString, n):
result = ""
for i in range(len(plainString)):
char = plainString[i]
if (char.isspace()):
result += " "
else:
if (char.isupper()):
result += chr((ord(char) + n - 65) % 26 + 65)
else:
result += chr((ord(char) + n - 97) % 26 + 97)
return result
def main():
number = int(input("Input Number > "))
print(encrypt("This is Test String", number))
if __name__ == "__main__":
main()
Caesar Chiper 암호화를 복호화하는 것은 어떻게 할까?
반응형