rot13알고리즘 구현(특수문자, 대문자, 소문자 구현)

2023. 3. 1. 16:07암호학

 

about rot13

https://en.wikipedia.org/wiki/ROT13

 

역의 개념을 이용한 카이사르 기반 암호화 기법인데. rot 14, rot15 등의 방법들을 넣으면 일반적인 카이사르 암호랑은 다른 결과값이 나온다. 따라서 이를 코딩해본다.

 

https://rot13.com/

의 코드의 결과 값을 비교해가며 맞는 코드인지 확인했다.

 

ct2 = ""#입력하고자하는 평문, 혹은 암호문
apb1="abcdefghijklmnopqrstuvwxyz".upper()
apb2="abcdefghijklmnopqrstuvwxyz"

for k in range(26):
  flag=""
  for i in range(len(ct2)):
    if( 'A'<=ct2[i]<='Z'):
      if(ct2[i]>chr(ord('A')+k)):
        flag+=apb1[ord(ct2[i])-ord('A')-k]
      else:
        flag+=apb1[((ord(ct2[i])-ord('A'))+k)%26]
    elif('a'<=ct2[i]<='z'):
      if(ct2[i]>chr(ord('a')+k)):
        flag+=apb2[ord(ct2[i])-ord('a')-k]
      else:
        flag+=apb2[((ord(ct2[i])-ord('a'))+k)%26]
    else:
      flag+=ct2[i]
  print("KEY=", k, ", FLAG=", flag, end="")
  print()

'암호학' 카테고리의 다른 글

블록암호  (0) 2023.04.12
[암호] 무작위성  (0) 2023.03.08
[암호] 고전암호와 암호학 기초  (0) 2023.01.10