정보 보안

파이썬을 사용한 암호화와 해싱

코드로 칼퇴하기 2024. 5. 20. 20:23
반응형

기본적인 정보 보안 실습: 파이썬을 사용한 암호화와 해싱

주요 라이브러리 소개

  1. cryptography: 암호화와 관련된 다양한 기능을 제공하는 라이브러리.
  2. hashlib: 해싱 알고리즘 (SHA256, MD5 등)을 제공하는 표준 라이브러리.

암호화란?

암호화는 데이터를 보호하기 위해 원본 데이터를 특정 알고리즘과 키를 사용하여 변환하는 과정입니다. 이를 통해 권한이 없는 사용자가 데이터를 읽을 수 없도록 보호합니다. 암호화는 기밀성, 무결성, 인증을 보장하는 데 사용됩니다.

암호화 방식
암호화 방식 설명 예시 알고리즘
대칭 키 암호화 동일한 키로 데이터를 암호화하고 복호화합니다. AES, DES
비대칭 키 암호화 공개 키로 데이터를 암호화하고, 개인 키로 복호화합니다. RSA
암호화를 사용하는 이유

암호화는 민감한 데이터를 보호하기 위해 사용됩니다. 예를 들어, 인터넷을 통해 전송되는 개인정보, 금융 정보, 기밀 문서 등을 보호하기 위해 암호화가 필요합니다.

해싱이란?

해싱은 임의의 크기의 데이터를 고정된 크기의 고유한 값으로 변환하는 과정입니다. 해싱은 데이터의 무결성을 확인하는 데 사용되며, 비밀번호 저장, 데이터 검증, 디지털 서명 등에 활용됩니다.

해싱 알고리즘

대표적인 해싱 알고리즘으로는 MD5, SHA-1, SHA-256 등이 있습니다. 해싱은 단방향 함수로, 원본 데이터를 해시 값으로부터 복원할 수 없습니다.

정보 보안 실습

  1. 필수 라이브러리 설치
  2. pip install cryptography
  3. 파이썬을 사용한 대칭 키 암호화
    • 출력 결과 예시:
        Encrypted: b'gAAAAABf...'
        Decrypted: b'Hello, World!'
  4. from cryptography.fernet import Fernet # 키 생성 key = Fernet.generate_key() cipher_suite = Fernet(key) # 메시지 암호화 message = b"Hello, World!" encrypted_message = cipher_suite.encrypt(message) print(f"Encrypted: {encrypted_message}") # 메시지 복호화 decrypted_message = cipher_suite.decrypt(encrypted_message) print(f"Decrypted: {decrypted_message}")
  5. 파이썬을 사용한 해싱
    • 출력 결과 예시:
        SHA-256: a591a6d4... (64 characters)
  6. import hashlib # SHA-256 해싱 message = "Hello, World!" hash_object = hashlib.sha256(message.encode()) hex_dig = hash_object.hexdigest() print(f"SHA-256: {hex_dig}")
  7. 파일 무결성 검사
    • 출력 결과 예시: example.txt 파일의 SHA-256 해시 값이 출력됩니다.
  8. def calculate_file_hash(file_path): hash_sha256 = hashlib.sha256() with open(file_path, "rb") as f: for chunk in iter(lambda: f.read(4096), b""): hash_sha256.update(chunk) return hash_sha256.hexdigest() file_hash = calculate_file_hash("example.txt") print(f"File SHA-256: {file_hash}")

파이썬을 사용한 암호화와 해싱은 데이터를 보호하고 무결성을 검증하는 중요한 기술입니다. 위의 실습 예제를 통해 기본적인 정보 보안 개념을 익히고, 실제 데이터 보호에 적용해 보세요. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!

시각 자료 추가

암호화 과정 다이어그램

암호화와 복호화 과정을 시각적으로 이해하기 위해 다이어그램을 추가합니다.

해싱 과정 다이어그램

해싱 과정을 시각적으로 이해하기 위해 다이어그램을 추가합니다.