파이썬으로 시저 암호화 프로그램 작성
소개
CTF를 시작하면 시저 암호라고 하는 것이 나왔기 때문에 복호 처리가 필요하게 되었다.
수작업으로도 할 수 있지만 여기는 프로그램입니다! 재활도 되고! 라고 하는 일로 조속히 써 보았다.
내 머신에는 Python의 개발 환경 밖에 없었기 때문에 Python으로 Go!
시저 암호란?
복호하기 위해서는 어떤 알고리즘으로 생성된 암호인지를 알아야 한다.
시저 암호는 문자를 3문자씩 시프트하여 생성한다. 호호 심플!
※특히 3문자가 아니어도 좋다고.
참고 사이트: https://ko.wikipedia.org/wiki/시저 암호
암호화 및 복호화 프로그램
우선은 암호화를.
평문을 1문자마다 지정의 키(수)로 시프트 한다.
대문자 소문자는 별도이므로 이번에는 영소문자만으로 짜낸다.
영문자는 25개이므로 빙빙 돌도록 주의.
적당한 문자열 "wjrslairznb"를 암호화!
def crypt(plainStr, shiftInt):
resultStr = ""
for char in plainStr:
if ord(char) + shiftInt > ord('z'):
resultStr = resultStr + chr(ord(char) + shiftInt - 26)
else:
resultStr = resultStr + chr(ord(char) + shiftInt)
print('crypt:' + resultStr)
실행 결과
복호화는 단순히 반대로 계산했을 뿐입니다 ...
def decrypt(cryptoStr, shiftInt):
resultStr = ""
for char in cryptoStr:
if ord(char) - shiftInt < ord('a'):
resultStr = resultStr + chr(ord(char) - shiftInt + 26)
else:
resultStr = resultStr + chr(ord(char) - shiftInt)
print('decrypt:' + resultStr)
실행 결과
더 살짝 간단하게 할 수 있을 것 같아…
여담 : 시저 암호는 암호로는 너무 쉽지만 사용할 수 있나요?
사용할 수 없다. 취약하다! !
고대 로마에 만들어진 암호이므로, 옛날에는 유효했을 것이라고 말하는 것.
암호에는 역사가 있습니다.
결론
실은 프로그램은 오랜만에 게다가 Python 환경은 있는데 거의 만진 일 없이 매우 즐거웠다.
이 손의 프로그램은 구그라면 산정 나오지만 우선은 스스로 써 보고, 나중에 천재적인 코드를 보고 대답을 하는 것을 좋아합니다.
Reference
이 문제에 관하여(파이썬으로 시저 암호화 프로그램 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s-hirano/items/7e7343e6d70801258f1d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
복호하기 위해서는 어떤 알고리즘으로 생성된 암호인지를 알아야 한다.
시저 암호는 문자를 3문자씩 시프트하여 생성한다. 호호 심플!
※특히 3문자가 아니어도 좋다고.
참고 사이트: https://ko.wikipedia.org/wiki/시저 암호
암호화 및 복호화 프로그램
우선은 암호화를.
평문을 1문자마다 지정의 키(수)로 시프트 한다.
대문자 소문자는 별도이므로 이번에는 영소문자만으로 짜낸다.
영문자는 25개이므로 빙빙 돌도록 주의.
적당한 문자열 "wjrslairznb"를 암호화!
def crypt(plainStr, shiftInt):
resultStr = ""
for char in plainStr:
if ord(char) + shiftInt > ord('z'):
resultStr = resultStr + chr(ord(char) + shiftInt - 26)
else:
resultStr = resultStr + chr(ord(char) + shiftInt)
print('crypt:' + resultStr)
실행 결과
복호화는 단순히 반대로 계산했을 뿐입니다 ...
def decrypt(cryptoStr, shiftInt):
resultStr = ""
for char in cryptoStr:
if ord(char) - shiftInt < ord('a'):
resultStr = resultStr + chr(ord(char) - shiftInt + 26)
else:
resultStr = resultStr + chr(ord(char) - shiftInt)
print('decrypt:' + resultStr)
실행 결과
더 살짝 간단하게 할 수 있을 것 같아…
여담 : 시저 암호는 암호로는 너무 쉽지만 사용할 수 있나요?
사용할 수 없다. 취약하다! !
고대 로마에 만들어진 암호이므로, 옛날에는 유효했을 것이라고 말하는 것.
암호에는 역사가 있습니다.
결론
실은 프로그램은 오랜만에 게다가 Python 환경은 있는데 거의 만진 일 없이 매우 즐거웠다.
이 손의 프로그램은 구그라면 산정 나오지만 우선은 스스로 써 보고, 나중에 천재적인 코드를 보고 대답을 하는 것을 좋아합니다.
Reference
이 문제에 관하여(파이썬으로 시저 암호화 프로그램 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s-hirano/items/7e7343e6d70801258f1d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def crypt(plainStr, shiftInt):
resultStr = ""
for char in plainStr:
if ord(char) + shiftInt > ord('z'):
resultStr = resultStr + chr(ord(char) + shiftInt - 26)
else:
resultStr = resultStr + chr(ord(char) + shiftInt)
print('crypt:' + resultStr)
def decrypt(cryptoStr, shiftInt):
resultStr = ""
for char in cryptoStr:
if ord(char) - shiftInt < ord('a'):
resultStr = resultStr + chr(ord(char) - shiftInt + 26)
else:
resultStr = resultStr + chr(ord(char) - shiftInt)
print('decrypt:' + resultStr)
사용할 수 없다. 취약하다! !
고대 로마에 만들어진 암호이므로, 옛날에는 유효했을 것이라고 말하는 것.
암호에는 역사가 있습니다.
결론
실은 프로그램은 오랜만에 게다가 Python 환경은 있는데 거의 만진 일 없이 매우 즐거웠다.
이 손의 프로그램은 구그라면 산정 나오지만 우선은 스스로 써 보고, 나중에 천재적인 코드를 보고 대답을 하는 것을 좋아합니다.
Reference
이 문제에 관하여(파이썬으로 시저 암호화 프로그램 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s-hirano/items/7e7343e6d70801258f1d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(파이썬으로 시저 암호화 프로그램 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/s-hirano/items/7e7343e6d70801258f1d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)