반응형
'아핀 암호'를 파이썬으로 어떻게 구현하는지 알아보려고 합니다. 기본적인 암호학의 개념인 아핀 암호를 파이썬 코드로 표현하면서, 파이썬의 장점을 발견하실 수 있을 겁니다.
1. 아핀 암호란?
아핀 암호는 이름에서 알 수 있듯이, 아핀 변환의 원리를 사용한 암호화 방법입니다. 아핀 변환은 두 가지 기본 연산, 즉 '이동(translation)'과 '확대/축소(scaling)'를 이용한 것입니다. 아핀 암호에서는 이 두 연산을 암호화와 복호화 과정에 적용합니다.
2. 파이썬 코드 예시
#아핀 암호
ENC = 0
DEC = 1
def makeDisk(k1, k2):
enc_disk = {}
dec_disk = {}
for i in range(26):
enc_i = (k1*i + k2)%26
enc_ascii = enc_i + 65
enc_disk[chr(i+65)] = chr(enc_ascii)
dec_disk[chr(enc_ascii)] = chr(i+65)
return enc_disk, dec_disk
def affine(msg, key1, key2, mode):
ret = ''
msg = msg.upper()
enc_disk, dec_disk = makeDisk(key1, key2)
if mode is ENC:
disk = enc_disk
if mode is DEC:
disk = dec_disk
for c in msg:
if c in disk:
ret += disk[c]
else:
ret += c
return ret
def main():
k1, k2 = 3, 2
check='0'
while check != '3':
print("1.Cipher\n2.Decipher\n3.Exit")
check = input("number: ")
if check == '1':
f = open("C:/msg.txt", 'r')
line = f.read()
msg = line
msg = affine(msg, k1, k2, ENC)
f = open("C:/Cipher.txt", 'w')
f.write(msg)
f.close()
elif check == '2':
f = open("C:/Cipher.txt", 'r')
line = f.read()
msg = line
msg = affine(msg, k1, k2, DEC)
f = open("C:/Decipher.txt", 'w')
f.write(msg.lower())
f.close()
if __name__ == '__main__':
main()
#C드라이브에 msg.txt를 생성 후 암호화 하고 싶은 내용을 넣고 사용하면 됨
참조
http://www.yes24.com/Product/Goods/78875992
※화이트 해커를 위한 암호와 해킹
반응형
'IT > 👨💻Computer Science' 카테고리의 다른 글
파일 시스템 계층 구조 표준 (0) | 2021.12.26 |
---|---|
Slack 데이터 통계 자동화 (0) | 2021.07.30 |
slack - slack api 정리 (0) | 2021.07.30 |
파일의 구성 (0) | 2021.05.23 |
물리적 저장장치 구조(메모리 계층 구조) (0) | 2021.05.23 |
데이터베이스 시스템 로그 기반 회복(공부용...) (0) | 2021.05.23 |
ER 다이어그램의 관계형 모델 변환 (0) | 2021.05.11 |
데이터베이스 모델링 (0) | 2021.05.11 |