작업 히스토리 (History)
기록된 작업이 없습니다.

로그인하시면 작업 기록을 무제한으로 저장하고 여러 기기에서 동기화하여 사용할 수 있습니다.

AESCIPHERSECURITY

AES 암복호화

비밀번호 또는 16진수 키를 사용해 AES-GCM/CBC로 메시지를 암복호화합니다.

Encryption Mode
Parameters (Salt & IV)
Salt (Hex, 16-byte)32 hex chars
IV (Hex, 12-byte)24 hex chars
Result Output
Encrypted cipher representation
CIPHERTEXT
Waiting for input text and password...
Cipher Settings

도구 설명 및 사용 방법

비밀번호나 16진수 보안 키를 기준으로 대칭 암호화 규격인 AES 알고리즘을 사용해 데이터를 완전히 난독화하거나 원래대로 환원합니다. GCM 및 CBC 작동 모드를 모두 지원합니다.

사용 단계

1
수행할 작업 방향(Encrypt 암호화 / Decrypt 복호화) 탭을 결정합니다.
2
대칭키 기준 비밀번호를 입력하고, 상세 암호화 연산 모드(GCM 또는 CBC)를 설정합니다.
3
암호화할 원문을 적어 실시간 계산된 암호 데이터 스트링을 추출합니다.
4
복호화할 때는 원문 암호 기입 후 암호화 당시 사용했던 비밀번호와 블록 모드를 대조 입력해 평문을 풀어냅니다.

작동 원리 및 상세 설명

AES(Advanced Encryption Standard)는 수학적 갈루아 필드(Galois Field) 치환 연산을 기반으로 하는 미 연방 표준 대칭키 암호화 알고리즘입니다. 암복호화 시 동일한 비밀키를 유도(PBKDF2)하여 사용하며, 평문 데이터를 128비트 블록 단위로 나누어 혼돈(Confusion)과 확산(Diffusion) 행렬 연산을 다회전(Round) 수행함으로써 수학적 예측 가능성을 원천 훼손시킵니다.

자주 묻는 질문 (FAQ)

AES-GCM과 AES-CBC 모드의 보안상 핵심 차이점은 무엇인가요?
GCM(Galois/Counter Mode)은 단순 암호화 외에도 데이터가 도중에 변조되었는지를 검증하는 인증 태그(Authentication Tag) 기능을 제공(AEAD)합니다. CBC 모드는 암호화만 수행하므로 충돌 공격(Padding Oracle Attack) 등에 취약해, 현대 웹 크립토 환경에서는 GCM 사용이 적극 권장됩니다.
솔트(Salt)와 초기화 벡터(IV)는 왜 사용되나요?
동일한 비밀번호와 동일한 평문을 암호화하더라도 매번 완전히 다른 암호문 결과가 나오도록 무작위 소금을 뿌리고 시작 지점 오프셋을 트는 장치입니다. 이를 통해 제3자가 암호문 패턴을 역추적하는 것을 물리적으로 무산시킵니다.

코드 사용 예시

JavaScript Web Crypto API 기반 AES-GCM 암호화 예제 코드
javascript
async function encryptAESGCM(plaintext, password) {
  const enc = new TextEncoder();
  const keyMaterial = await window.crypto.subtle.importKey(
    "raw", enc.encode(password), "PBKDF2", false, ["deriveKey"]
  );
  
  const salt = window.crypto.getRandomValues(new Uint8Array(16));
  // PBKDF2를 통해 비밀번호 문자열을 안전한 256비트 암호키로 유도
  const key = await window.crypto.subtle.deriveKey(
    { name: "PBKDF2", salt, iterations: 100000, hash: "SHA-256" },
    keyMaterial,
    { name: "AES-GCM", length: 256 },
    false,
    ["encrypt"]
  );
  
  const iv = window.crypto.getRandomValues(new Uint8Array(12)); // GCM용 12바이트 IV
  const ciphertext = await window.crypto.subtle.encrypt(
    { name: "AES-GCM", iv }, key, enc.encode(plaintext)
  );
  return { ciphertext: new Uint8Array(ciphertext), salt, iv };
}

보안성을 극대화하기 위해 PBKDF2 키 유도 알고리즘과 무작위 Salt/IV를 결합한 규격의 암호화 처리 코드입니다.