본문 바로가기
프로그램/Python 1000제

Python 318제] 두근두근 파이썬(개정판) CHAPTER 11 도전문제 p357

by 건티 2024. 10. 14.
728x90

출처 : 반크_독도2023

 

참고풀이]

key="abcdefghijklmnopqrstuvwxyz"

#평문을 받아서 암호화하고 암호문을 반환한다.
def encrypt(n, plaintext):
    result=''
    for k in plaintext.lower():
        try:
            i=(key.index(k) + n) % 26
            result += key[i]
        except ValueError:
            result += k

    return result.lower()

#암호문을 받아서 복호화하고 평문을 반환한다.
def descrambling(n, encrypted):
    result=''
    for k in encrypted.lower():
        try:
            i=(key.index(k) - n) % 26
            result += key[i]
        except ValueError:
            result += k

    return result.lower()

#파일을 불러온다.
s=''
def Load(fileName):
    global s
    f = open(fileName,"r")
    s = f.read() #text.txt자료들을 s에 저장한다.
    s = s.rstrip() #'\n'들을 제거하여 다시 s에 저장한다.
    f.close()

#파일을 저장한다.
def Save(fileName):
    global s1
    f = open(fileName, "w")
    f.write(s1)
    f.close()

#평문을 읽어온다.
Load("test.txt")
#평문의 단어를 오른쪽으로 3칸 이동시켜 암화화한다.
s1 = encrypt(3,s)

#결과출력
print("평문을 암호화 하기]")
print('평 문 :', s)
print('암호문 :', s1)

#암호문 저장하기
Save("encry01.txt")

#저장된 암호문 불러오기
Load("encry01.txt")
#불러온 암호문을 복호화하기
s1 = descrambling(3, s)

#결과출력
print("\n암호문을 복호화 하기]")
print('암 호  문 서 :', s)
print('복호화한 문서 :', s1)

#복호화한 내용 저장하기
Save("descram01.txt")

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도

 

반응형

댓글