DevToolPal
한국어

AES 암호화·복호화

패스프레이즈(PBKDF2)나 16진수 키로 텍스트를 AES-GCM 또는 AES-CBC로 암호화·복호화하고 Base64로 출력합니다.

로컬에서 실행, 업로드 없음

옵션

모드
알고리즘
키
키 길이

입력

0자 · 0 B

출력

0자 · 0 B

기능

AES(Advanced Encryption Standard)는 HTTPS, 디스크 암호화, 비밀번호 관리자, 메신저 등 거의 모든 곳에서 쓰이는 대칭 암호입니다. 같은 비밀 키로 암호화와 복호화를 합니다. 이 도구는 텍스트를 어디에나 붙여 넣을 수 있는 Base64로 암호화하고 다시 복호화합니다.

다음 중 하나를 키로 사용할 수 있습니다:

  • 패스프레이즈: PBKDF2-HMAC-SHA256과 무작위 솔트로 128비트 또는 256비트 키로 바꿉니다.
  • 16진수 키: 16진수 32자 또는 64자(128/256비트)를 그대로 씁니다. 무작위 키를 누르면 새로 만들 수 있습니다.

두 가지 운용 모드를 제공합니다. AES-GCM은 변조를 감지하는 현대적인 기본값이고, AES-CBC(PKCS#7 패딩)는 오래된 시스템과의 호환을 위해 제공합니다.

사용 방법

  1. 암호화 또는 복호화, 알고리즘, 키 종류를 고릅니다.
  2. 입력 상자 위쪽에 패스프레이즈를 입력하거나 16진수 키를 붙여 넣습니다.
  3. 텍스트(또는 복호화할 Base64)를 붙여 넣으면 오른쪽에 결과가 나타납니다. 입력으로 사용을 누르면 방향을 바꿔 왕복을 확인할 수 있습니다.

출력 형식

이메일이나 채팅에서도 깨지지 않도록 출력은 하나의 Base64 문자열입니다:

passphrase:  salt (16 bytes) | IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)
hex key:     IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)

복호화할 때는 암호화할 때와 같은 알고리즘, 키 종류, 키 길이, 반복 횟수를 써야 합니다. 이 설정은 페이지 주소에 저장되므로 공유 링크에는 설정만 담기고 키는 여러분에게 남습니다.

패스프레이즈 고르기

PBKDF2는 추측을 느리게 만들지만 짧거나 흔한 패스프레이즈까지 지켜 주지는 못합니다. 비밀번호 생성기 등으로 만든 긴 무작위 패스프레이즈를 쓰고, 암호문과는 다른 경로로 공유하세요. 반복 횟수가 많을수록 추측이 어려워지고 복호화는 약간 느려집니다. 보통 10만~60만 회를 씁니다.

자주 묻는 질문

› GCM과 CBC 중 무엇을 골라야 하나요?

다른 시스템이 CBC를 요구하지 않는다면 GCM을 고르세요. GCM은 인증 기능이 있어 잘못된 키나 한 바이트의 변경도 감지하며, 깨진 결과를 내놓지 않습니다. CBC는 기밀성만 제공하므로 주로 오래된 코드와의 호환에 쓰입니다.

› 왜 암호문이 매번 달라지나요?

암호화할 때마다 새로운 무작위 IV를 쓰고, 패스프레이즈를 쓸 때는 새로운 무작위 솔트도 씁니다. 둘 다 출력 앞부분에 저장되므로 복호화에는 문제가 없습니다. 같은 키로 IV를 재사용하는 것(특히 GCM)은 심각한 약점입니다.

› 내 코드에서 출력을 복호화하려면 어떻게 하나요?

Base64를 디코딩합니다. 패스프레이즈를 썼다면 처음 16바이트가 PBKDF2 솔트, 그다음이 IV(GCM 12바이트, CBC 16바이트), 그 뒤가 암호문입니다. 같은 반복 횟수의 PBKDF2-HMAC-SHA256으로 키를 유도하세요. 16진수 키에는 솔트가 없습니다. GCM에서는 마지막 16바이트가 인증 태그입니다.

› 패스프레이즈나 키가 저장되거나 전송되나요?

아니요. 암호화는 브라우저의 Web Crypto API로 실행됩니다. 패스프레이즈나 키는 이 페이지의 메모리에만 있으며 저장되거나 주소창에 기록되거나 공유 링크에 포함되지 않으므로, 키 없이 암호문만 공유할 수 있습니다.