Sodium

Sodium (암호화)

Sodium은 암호화, 복호화, 서명, 패스워드 해싱 등을 위한 현대적이고 사용하기 쉬운 소프트웨어 라이브러리예요. PHP의 Sodium 확장은 libsodium의 기능을 제공해요.

출처: PHP: Sodium - Manual

본문

Sodium은 암호화, 복호화, 서명, 패스워드 해싱 등을 위한 현대적이고 사용하기 쉬운 소프트웨어 라이브러리예요. 그 목표는 더 높은 수준의 암호화 도구를 만드는 데 필요한 모든 핵심 연산을 제공하는 것이에요.

주요 기능 분류

Sodium 함수가 워낙 많아 기능별로 나누면 이렇게 정리돼요.

대칭 암호화 (비밀 키)

  • sodium_crypto_secretbox, sodium_crypto_secretbox_open — 인증된 공유 키 암호화/복호화
  • sodium_crypto_secretstream_* — 스트리밍 암호화/복호화
  • sodium_crypto_stream_* — 논스 기반 암호화

AEAD(인증 암호화)

  • sodium_crypto_aead_chacha20poly1305_* — ChaCha20-Poly1305
  • sodium_crypto_aead_xchacha20poly1305_ietf_* — (권장) XChaCha20-Poly1305
  • sodium_crypto_aead_aes256gcm_* — AES-256-GCM
  • sodium_crypto_aead_aegis128l_*, sodium_crypto_aead_aegis256_* — AEGIS

비대칭 암호화 (공개 키)

  • sodium_crypto_box, sodium_crypto_box_open — 인증된 공개 키 암호화/복호화
  • sodium_crypto_box_seal, sodium_crypto_box_seal_open — 익명 공개 키 암호화/복호화

서명

  • sodium_crypto_sign, sodium_crypto_sign_detached, sodium_crypto_sign_open, sodium_crypto_sign_verify_detached — Ed25519 서명

패스워드 해싱·KDF

  • sodium_crypto_pwhash, sodium_crypto_pwhash_str, sodium_crypto_pwhash_str_verify, sodium_crypto_pwhash_str_needs_rehash — Argon2 기반
  • sodium_crypto_pwhash_scryptsalsa208sha256_* — scrypt 기반
  • sodium_crypto_kdf_derive_from_key, sodium_crypto_kdf_keygen — 키 파생
  • sodium_crypto_kx_* — 키 교환

해시·인증·인코딩

  • sodium_crypto_generichash* — BLAKE2b 기반 일반 해시
  • sodium_crypto_auth, sodium_crypto_auth_verify — 메시지 인증
  • sodium_crypto_shorthash — 짧은 해시
  • sodium_bin2hex, sodium_hex2bin, sodium_base642bin, sodium_bin2base64 — 인코딩 변환

상수 시간 연산·메모리

  • sodium_memcmp — 상수 시간 동등 비교
  • sodium_memzero — 문자열을 NUL로 덮어쓰기
  • sodium_pad, sodium_unpad — 패딩 추가/제거
  • sodium_add, sodium_increment, sodium_compare — 큰 수 연산

클래스

  • SodiumException — Sodium 예외 클래스

더 알아보기