Toolonit
  1. 홈
  2. 암호화
  3. 암호화 / 복호화
  4. AES

AES 암호화·복호화

AES-128·192·256(GCM, CBC, CTR 등)으로 텍스트를 암호화·복호화합니다.

암호화 방식

복호화할 때 다시 필요합니다. 입력한 내용은 이 페이지 밖으로 나가지 않습니다.

PBKDF2 반복 횟수

OpenSSL 기본값은 10,000입니다. 원하는 값을 직접 넣을 수도 있습니다. 클수록 비밀번호를 추측하기 어려워지며, 복호화할 때도 같은 값이 필요합니다.

모드

OpenSSL에서 가장 흔한 선택. IV가 필요하고 블록 단위로 패딩합니다.

키 길이
출력 형식
OpenSSL로 같은 작업
openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -a -A

OpenSSL이 비밀번호를 묻습니다. 텍스트를 붙여 넣거나 -in, -out 파일을 지정하세요.

비밀번호나 직접 정한 키·IV로 텍스트를 AES-256(또는 AES-128, AES-192)으로 암호화하고, Base64나 hex로 된 AES 암호문을 붙여 넣어 복호화합니다. 비밀번호 방식의 결과는 openssl enc -pbkdf2와 같은 형식입니다. Salted__ 머리글, 무작위 8바이트 솔트, 암호문 순서이고, 키와 IV는 PBKDF2-HMAC-SHA256으로 만듭니다. 기본값(AES-256, CBC 모드, PKCS#7 패딩, Base64 출력)은 openssl enc -aes-256-cbc -pbkdf2 -a와 같으며, GCM, CTR, CFB, OFB, ECB도 클릭 한 번으로 고릅니다. 입력하는 대로 결과가 바뀝니다. 모든 처리는 브라우저 안에서 이루어져 텍스트, 비밀번호, 키가 기기 밖으로 나가지 않으며, 무료이고 가입도 필요 없습니다.

AES로 텍스트 암호화·복호화하는 방법

  1. 암호화 또는 복호화를 고릅니다. 암호화할 텍스트를 입력하거나, 복호화할 Base64·hex 텍스트를 붙여 넣습니다. 형식은 자동으로 알아냅니다.
  2. 비밀번호를 입력하거나(‘생성’을 누르면 강력한 비밀번호를 만듭니다), 키·IV(hex)로 바꿔 안내된 길이의 키와 IV를 입력하거나 생성합니다.
  3. 키 길이(128·192·256비트)와 모드를 고릅니다. 복호화할 때는 암호화할 때와 같은 비밀번호, 반복 횟수, 키 길이, 모드를 써야 합니다.
  4. 결과를 복사하거나 내려받고, 입출력 바꾸기로 결과를 입력 칸에 옮겨 방향을 뒤집을 수도 있습니다. ‘OpenSSL로 같은 작업’에는 같은 일을 하는 openssl 명령이 비밀번호 없이 나옵니다.

주요 기능

  • AES-128·192·256, CBC·GCM·CTR·CFB·OFB·ECB 모드
  • openssl enc -pbkdf2 형식의 비밀번호 방식: Salted__ 머리글, 무작위 8바이트 솔트, PBKDF2-HMAC-SHA256으로 만든 키와 IV
  • PBKDF2 반복 횟수 10,000(OpenSSL 기본값)·100,000·600,000회, 또는 1,000만 회까지 원하는 값
  • 직접 정한 hex 키·IV, 또는 ‘생성’으로 만든 무작위 키·IV를 쓰는 키·IV 방식
  • AES-GCM은 틀린 비밀번호·키와 암호문의 변경을 알아냄
  • PKCS#7 패딩, CBC·ECB에서는 패딩 없음도 가능
  • Base64·hex 출력, 입력 형식은 자동 인식
  • GCM을 뺀 모든 모드에서 같은 결과를 내는 openssl enc 명령 표시

개인정보는 안전한가요?

네. AES 계산은 브라우저 안의 WebAssembly가, 비밀번호로 키를 만드는 일은 브라우저에 내장된 Web Crypto가 합니다. 텍스트, 비밀번호, 키는 업로드하거나 저장하지 않으며, 페이지에 나오는 openssl 명령에도 들어가지 않습니다.

자주 묻는 질문

AES 모드는 무엇을 골라야 하나요?

새 데이터라면 GCM을 쓰세요. 암호화와 함께 텍스트가 바뀌었거나 비밀번호가 틀렸는지도 알아냅니다. 상대가 GCM을 읽지 못하는 openssl enc를 쓴다면 기본값인 CBC를, 기존 시스템과 맞춰야 할 때만 CTR, CFB, OFB를 고르세요. ECB는 피하세요. 같은 16바이트 블록이 같은 암호문이 되어 원문의 패턴이 드러납니다.

OpenSSL로 복호화할 수 있나요?

GCM을 빼면 됩니다. 기본값이라면 echo 'U2FsdGVkX1…' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -a -A 를 실행하고 비밀번호를 입력합니다. 256과 cbc는 쓴 키 길이와 모드(ecb, ctr, cfb, ofb)로, -iter는 쓴 반복 횟수로 바꾸고, 패딩을 껐다면 -nopad를 붙입니다. hex로 출력했다면 -a -A를 빼고 먼저 xxd -r -p로 바이트로 바꿔 넘깁니다. 키·IV 방식이라면 -pbkdf2 -iter 대신 -K <키 hex> -iv <IV hex>를 씁니다. openssl enc는 GCM(AEAD)을 지원하지 않으므로 GCM 암호문은 이 페이지나 코드로만 읽을 수 있습니다.

왜 할 때마다 결과가 달라지나요?

비밀번호 방식은 암호화할 때마다 새 무작위 솔트를 쓰기 때문입니다. 키와 IV, 결과 전체가 매번 달라지지만 어느 결과든 같은 원문으로 복호화됩니다. 두 메시지가 같은지 남이 알 수 없게 하려는 의도된 동작입니다. 키·IV 방식에서는 키와 IV가 같으면 결과도 같으니 메시지마다 새 IV를 생성하세요. 같은 키로 IV를 다시 쓰면 CBC는 약해지고 CTR과 GCM은 깨집니다.

비밀번호가 틀렸다고 나와요.

설정 중 하나가 다르기 때문입니다. 비밀번호, 반복 횟수, 키 길이, 모드, 패딩이 암호화할 때와 모두 같아야 하며, 암호문에는 솔트만 들어 있습니다. U2FsdGVkX1로 시작하더라도 -pbkdf2 없이 openssl enc로 만들었거나 CryptoJS에 비밀번호를 넣어 만든 암호문은 예전 키 유도 방식(EVP_BytesToKey)을 써서 이 페이지에서 읽지 못합니다. -pbkdf2로 다시 암호화하거나, 원래 키와 IV를 안다면 키·IV 방식을 쓰세요.

AES-256 암호화는 안전한가요?

네. AES는 어떤 키 길이에서도 현실적인 공격법이 없고, 약한 곳은 비밀번호입니다. 길고 무작위한 비밀번호를 쓰고(‘생성’ 버튼), 양쪽을 모두 직접 다룬다면 반복 횟수를 OWASP가 PBKDF2-HMAC-SHA256에 권장하는 600,000회로 올리세요. 텍스트가 바뀌지 않았는지도 확인해야 한다면 GCM을 고르세요.

관련 도구