AES 암호화 / 복호화
텍스트와 passphrase를 붙여 넣으면 선택한 PHP OpenSSL cipher로 AES 암호화 또는 복호화를 빠르게 실행합니다. AES는 NIST가 FIPS 197에서 표준화한 대칭 블록 암호이며 TLS, WPA2, VPN, 디스크 암호화 등 많은 시스템에서 쓰입니다. 다만 이 페이지는 낮은 위험의 텍스트를 위한 편의 도구이지, 감사를 거친 비밀 보관소가 아닙니다. 민감한 파일이나 오래 보관할 비밀에는 age, GnuPG, 7-Zip 같은 오프라인 도구를 사용하세요.
AES로 텍스트를 암호화하는 방법
-
1
OpenSSL cipher 선택
현재 옵션에는 CBC, CTR, GCM 변형이 포함됩니다. CBC와 CTR 출력은 인증되지 않으며, 이 도구는 GCM 인증 tag를 저장하거나 검증하지 않습니다.
-
2
passphrase 입력
passphrase는 AES 키를 만들기 위해 SHA-256으로 한 번 해시됩니다. PBKDF2, salt, Argon2, work factor가 없으므로 길고 무작위인 passphrase를 사용하세요.
-
3
낮은 위험의 텍스트 붙여넣기
이 도구는 서버 측 PHP OpenSSL 유틸리티입니다. 이 사이트로 보내고 싶지 않은 비밀번호, 운영 키, 개인 문서, 비밀은 붙여 넣지 마세요.
-
4
Base64 결과 복사
암호화할 때 무작위 IV를 만들고, 원시 암호문 앞에 붙인 뒤 결합된 바이트를 Base64로 인코딩합니다. 복호화에는 같은 cipher와 passphrase가 필요합니다.
이 도구가 실제로 출력하는 것
이 구현은 PHP OpenSSL을 사용합니다. 암호화 시 passphrase를 SHA-256으로 해시하고, 선택한 cipher가 요구하는 길이의 무작위 IV를 만든 뒤, 텍스트를 암호화하고 다음을 반환합니다.
Base64(IV || 암호문)
출력에는 salt, PBKDF2 파라미터, HMAC, GCM 인증 tag가 포함되지 않습니다. Web Crypto, age, GnuPG, OpenSSL 명령줄 레시피, 7-Zip이 만드는 형식과 호환되지 않습니다.
AES 옵션의 맥락
AES는 고정 128비트(16바이트) 블록 크기와 128, 192, 256비트 표준 키 크기를 가집니다. 여기서 중요한 보안 차이는 키 크기만이 아니라, 암호화된 메시지가 인증되는지 여부입니다.
| Cipher 옵션 | 이 도구에서 알아둘 점 |
|---|---|
| AES-128-CBC / AES-192-CBC / AES-256-CBC | 무작위 IV와 PKCS#7 padding을 쓰는 일반적인 블록 모드입니다. 변조 탐지를 위해 HMAC-SHA-256 같은 별도 MAC이 필요합니다. |
| AES-256-CTR | AES를 스트림처럼 쓰는 모드입니다. 별도 인증이 필요하며, 같은 키로 같은 IV/counter를 절대 재사용하면 안 됩니다. |
| AES-128-GCM / AES-256-GCM | GCM은 보통 AEAD 모드이지만 인증 tag를 저장하고 검증할 때만 그렇습니다. 이 도구의 출력에는 그 tag가 없으므로 인증 암호화로 신뢰하지 마세요. |
보안 주의사항
OWASP의 암호화 저장 가이드는 가능하면 인증 암호화를 쓰거나, 암호화와 별도 MAC을 함께 쓰라고 권장합니다. 이 도구를 사용할 때는 다음을 기억하세요.
- 대칭 암호화입니다 - 같은 passphrase로 복호화합니다. passphrase는 암호문과 다른 채널로 공유하세요.
- 약한 passphrase는 여기서 약한 키가 됩니다 - SHA-256은 빠르고 salt가 없어서, 공격자가 출력을 얻으면 추측을 빠르게 시험할 수 있습니다.
- CBC와 CTR에는 인증이 필요합니다 - HMAC이나 다른 MAC이 없으면 공격자가 암호문을 바꿔도 감지하지 못할 수 있습니다.
- 같은 키로 IV나 nonce를 재사용하지 마세요 - 도구는 암호화할 때 새 무작위 IV를 만들지만, 붙여 넣은 외부 데이터도 같은 규칙을 지켜야 합니다.
- 진짜 비밀에는 감사된 도구를 사용하세요 - age, GnuPG, 7-Zip은 파일 형식, metadata, 인증을 더 신중하게 처리합니다.
자주 묻는 질문
현재 컴포넌트는 passphrase를 SHA-256으로 해시하고 나온 바이트를 OpenSSL의 키 재료로 사용합니다. PBKDF2, salt, scrypt, Argon2를 쓰지 않으므로 짧거나 재사용한 passphrase는 위험합니다.
아니요. CBC와 CTR에는 HMAC-SHA-256 같은 별도 MAC이 필요합니다. GCM은 보통 AEAD 인증을 제공하지만, 이 도구는 Base64 출력 안에 GCM tag를 저장하거나 검증하지 않습니다.
액션이 PHP OpenSSL을 실행할 때 사이트 서버에서 처리됩니다. 브라우저 안에서만 실행되는 Web Crypto 도구가 아니므로 가치가 큰 비밀, 개인 키, 민감한 문서는 붙여 넣지 마세요.
Base64 결과에는 무작위 IV와 그 뒤의 원시 암호문이 들어갑니다. CBC padding이 바이트를 추가할 수 있고, Base64는 바이너리 데이터를 약 3분의 1 더 크게 만듭니다. 저장 형식에는 salt나 인증 tag가 없습니다.
이 도구는 텍스트만 처리하며 낮은 위험의 짧은 내용에 한정하는 편이 좋습니다. 파일이나 중요한 비밀에는 age, GnuPG, 7-Zip 같은 감사된 오프라인 암호화 도구를 사용하세요.
관련 도구
Base64 파일 인코더
모든 파일(PDF, ZIP, 이미지, 실행 파일)을 Base64 텍스트로 인코딩해 JSON, 이메일, YAML, data URI에 삽입하세요. 브라우저에서 로컬로 실행되며 업로드가 없습니다.
A1Z26 암호 인코더
A1Z26 암호(A=1, B=2, ... Z=26)로 텍스트를 인코딩하거나 숫자열을 다시 글자로 디코딩합니다. 구분자도 사용자 지정할 수 있습니다.
Base85 인코더 및 디코더
PostScript와 PDF 파일 안에서 쓰는 Adobe Ascii85 방식으로 Base85를 인코딩하고 디코딩하세요. 이진 데이터에서는 Base64보다 더 작습니다.
Base32 인코더 및 디코더
RFC 4648 알파벳으로 Base32 문자열을 인코딩하고 디코딩하세요. TOTP 시크릿, 대소문자를 구분하지 않는 토큰, 사람이 입력하는 식별자에 유용합니다.
Base58 인코더 및 디코더
UTF-8 텍스트나 16진수 바이트를 인코딩하고 Bitcoin, Ripple, Flickr 알파벳으로 Base58을 안전하게 디코딩하세요.
bcrypt 생성기
plaintext password에서 bcrypt hash를 생성합니다. cost factor 4부터 13까지 조정 가능하며 Laravel, Django, Node, PHP와 호환됩니다.
이 도구는 다른 언어로도 제공됩니다
- AES kryptera / dekryptera [SV]
- Enkripsi / Dekripsi AES [ID]
- Szyfrowanie i odszyfrowywanie AES [PL]
- เข้ารหัส / ถอดรหัส AES [TH]
- AES暗号化 / 復号 [JA]
- Mã hóa / giải mã AES [VI]
- Cifrado / Descifrado AES [ES]
- AES Encrypt / Decrypt [EN]
- AES Verschlüsseln / Entschlüsseln [DE]
- Chiffrement / Déchiffrement AES [FR]
- Criptografar / Descriptografar AES [PT]
- AES Şifrele / Şifre Çöz [TR]
- تشفير / فك تشفير AES [AR]
- AES 加密 / 解密 [ZH]
- AES versleutelen / ontsleutelen [NL]
- Шифрование / расшифровка AES [RU]
- AES Crittografia / Decrittografia [IT]