728x90
반응형
# 고전 암호 - 치환 암호
def substitution_codebook():
encbook = {'a':'c', 'b':'f', 'c':'d', 'd':'p', 'e':'z', 'f':'j', 'g':'h', 'h':'a', 'i':'b', 'j':'l', 'k':'m',\
'l':'n', 'm':'e', 'n':'q', 'o':'y', 'p':'s', 'q':'r', 'r':'t', 's':'o', 't':'w', 'u':'x', 'v':'i', 'w':'k', 'x':'u', 'y':'g', 'z':'v'}
decbook = {}
for k in encbook:
temp = encbook[k]
decbook[temp] = k
return encbook, decbook
def encrypt(msg1, encbook):
temp = ""
for c in msg1:
c = encbook[c]
temp += c
return temp
def decrypt(msg2, decbook):
temp = ""
for c in msg2:
c = decbook[c]
temp += c
return temp
if __name__ == '__main__':
print("평 문 : ",end=" ")
plaintext = input()
encbook, decbook = substitution_codebook()
ciphertext = encrypt(plaintext, encbook)
print("암호화 : ",ciphertext)
deciphertext = decrypt(ciphertext, decbook)
print("복호화 : ",deciphertext)
고전 암호 중 치환 암호를 구현한 것입니다.
치환 암호는 사용자가 치환하고자 하는 알파벳을 치환 코드로 지정한 다음, 입력한 문자열을 치환해서 암호화 합니다.
반응형
'Python > Project' 카테고리의 다른 글
hashlib의 MD5 사용 - 공부하는 도비 (0) | 2022.11.21 |
---|---|
단일 치환 암호 해독 (패턴 분석 공격) - 공부하는 도비 (2) | 2022.11.14 |
파이썬 확장 유클리드 알고리즘(Extended Euclidean Algorithm) 구현 - 공부하는 도비 (0) | 2021.05.21 |
파이썬 유클리드 알고리즘(Euclidean Algorithm) 구현 - 공부하는 도비 (0) | 2021.05.21 |
파이썬 고전 암호(치환 암호 구현).ver 2 - 공부하는 도비 (1) | 2021.02.03 |