반응형
'아핀 암호'를 파이썬으로 어떻게 구현하는지 알아보려고 합니다. 기본적인 암호학의 개념인 아핀 암호를 파이썬 코드로 표현하면서, 파이썬의 장점을 발견하실 수 있을 겁니다.
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
화이트 해커를 위한 암호와 해킹 (2판) - YES24
초보자를 위한 정보 보안의 기본『화이트 해커를 위한 암호와 해킹 2판(White Hat Python)』은 여러 해킹 기법에 대한 소스들을 파이썬으로 작성한 책이다. 파이썬 프로그래밍은 직관적이고 배우기
www.yes24.com
※화이트 해커를 위한 암호와 해킹
반응형
'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 |