0Pricing
Cryptology Academy · 강의

Python 암호화 라이브러리 개요

hazmat 및 고수준 기본 기능을 설정하고 라이브러리 구조를 이해합니다.

Python 암호화 라이브러리 개요은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

cryptography 라이브러리를 사용하는 이유

Python의 cryptography 라이브러리(PyCA 제공)는 고수준 Fernet 인터페이스와 저수준 hazmat 기본 요소를 모두 제공합니다. 이 라이브러리는 OpenSSL을 감싸며 Python에서 프로덕션 암호화의 커뮤니티 표준으로 사용됩니다.

설치 및 구조

설치: pip install cryptography. 두 계층으로 구성됩니다. cryptography.fernet(안전하고 사용 방침이 정해진 대칭 암호화)과 cryptography.hazmat.primitives(AES, RSA, EC, 해시, HMAC — 주의해서 사용해야 함)입니다.

Fernet: 안전한 대칭 암호화

Fernet은 타임스탬프와 함께 AES-128-CBC + HMAC-SHA256을 사용합니다. IV 생성, 패딩, MAC을 자동으로 처리합니다. 구성 값, 토큰 또는 작은 데이터 묶음을 암호화하는 데 적합합니다.

from cryptography.fernet import Fernet

# Generate a URL-safe base64-encoded 32-byte key
key = Fernet.generate_key()
f = Fernet(key)

token = f.encrypt(b"my secret data")
print("Encrypted:", token[:40], "...")

plain = f.decrypt(token)
print("Decrypted:", plain)

hazmat 기본 요소: 해시

hazmat 계층은 SHA-2, SHA-3, BLAKE2 등을 제공합니다.

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend

digest = hashes.Hash(hashes.SHA256(), backend=default_backend())
digest.update(b"Hello, ")
digest.update(b"world!")
result = digest.finalize()
print("SHA-256:", result.hex())

hazmat 기본 요소: HMAC

메시지 인증에 사용하는 HMAC입니다.

from cryptography.hazmat.primitives import hmac, hashes
import os

key = os.urandom(32)
h = hmac.HMAC(key, hashes.SHA256())
h.update(b"authenticated message")
signature = h.finalize()
print("HMAC-SHA256:", signature.hex())

# Verify
h2 = hmac.HMAC(key, hashes.SHA256())
h2.update(b"authenticated message")
h2.verify(signature)  # raises if invalid

키 직렬화

저장 또는 전송을 위해 키를 PEM/DER로 직렬화합니다.

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization

private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
)
print(pem[:60])

PEM에서 키 불러오기

디스크에서 PEM 키를 불러옵니다.

from cryptography.hazmat.primitives.serialization import load_pem_private_key

with open("private_key.pem", "rb") as f:
    pem_data = f.read()

key = load_pem_private_key(pem_data, password=b"passphrase")
print("Key loaded, size:", key.key_size, "bits")

X.509 인증서 처리

TLS 인증서를 구문 분석하고 검사합니다.

from cryptography import x509
import datetime

with open("cert.pem", "rb") as f:
    cert = x509.load_pem_x509_certificate(f.read())

print("Subject:", cert.subject)
print("Issuer:", cert.issuer)
print("Not valid after:", cert.not_valid_after_utc)
print("Serial:", cert.serial_number)

무작위 바이트 생성

암호학적으로 안전한 난수 생성을 위해 항상 os.urandom 또는 secrets를 사용하십시오.

import os, secrets

# Cryptographically secure 32-byte key
key = os.urandom(32)
print("Random key:", key.hex())

# secrets module: URL-safe token
token = secrets.token_urlsafe(32)
print("URL-safe token:", token)

hazmat 함정 피하기

hazmat API가 "위험 물질"이라고 불리는 데는 이유가 있습니다. 흔한 실수로는 논스 재사용, ECB 모드 사용, 인증 태그 생략, ==을 사용한 MAC 비교가 있습니다. 가능하면 고수준 API를 사용하십시오.

이해도 확인

Fernet 암호화는 원시 AES-CBC만 사용할 때 제공되지 않는 어떤 기능을 제공합니까?

학습 내용 복습

cryptography 라이브러리는 안전한 Fernet 계층과 유연한 hazmat 계층으로 구성됩니다. 대칭 암호화에는 Fernet을, AES-GCM, RSA, ECDSA 및 인증서 처리에는 hazmat을 사용하십시오. 키에는 항상 os.urandom을 사용하십시오. hazmat의 함정을 피하고 인증된 모드를 우선 사용하십시오.

자주 묻는 질문

“Python 암호화 라이브러리 개요” 강의는 무료인가요?

네 — “Python 암호화 라이브러리 개요” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Python 암호화 라이브러리 개요”에서 뭘 배우나요?

hazmat 및 고수준 기본 기능을 설정하고 라이브러리 구조를 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Python 암호화 라이브러리 개요” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Python 암호화 라이브러리 개요
  2. Python에서 AES-GCM 암호화 및 복호화
  3. Python의 RSA 및 ECDSA 키 쌍
  4. 흔한 Python 암호화 실수와 안전한 패턴
← Cryptology Academy(으)로 돌아가기