ChaCha20 암호화·복호화
ChaCha20-Poly1305 또는 ChaCha20으로 텍스트를 암호화·복호화합니다.
복호화할 때 다시 필요합니다. 입력한 내용은 이 페이지 밖으로 나가지 않습니다.
OpenSSL 기본값은 10,000입니다. 원하는 값을 직접 넣을 수도 있습니다. 클수록 비밀번호를 추측하기 어려워지며, 복호화할 때도 같은 값이 필요합니다.
인증 암호: 틀린 비밀번호나 키, 텍스트의 변경을 알아챕니다.
OpenSSL의 enc 명령은 ChaCha20-Poly1305을(를) 읽지 못합니다. 이 페이지나 암호 라이브러리로 복호화하세요. 16바이트 태그가 암호문 뒤에 붙어 있습니다.
ChaCha20-Poly1305(RFC 8439)는 TLS 1.3과 WireGuard가 쓰는 인증 암호입니다. 텍스트를 암호화하면서, 텍스트가 바뀌었거나 비밀번호가 틀린 것도 알아냅니다. 비밀번호나 직접 정한 256비트 키와 12바이트 논스로 텍스트를 암호화하고, Base64나 hex 암호문을 붙여 넣어 복호화합니다. 비밀번호 방식은 openssl enc -pbkdf2처럼 무작위 솔트와 PBKDF2-HMAC-SHA256으로 키와 논스를 만들고, 결과는 Salted__, 솔트, 암호문, 16바이트 Poly1305 태그 순서입니다. 태그 없는 일반 ChaCha20도 OpenSSL chacha20과 같은 형식으로 쓸 수 있습니다. 브라우저 안에서 실행되어 텍스트, 비밀번호, 키가 기기 밖으로 나가지 않으며, 무료이고 가입도 필요 없습니다.
ChaCha20-Poly1305로 텍스트 암호화하는 방법
- 암호화 또는 복호화를 고릅니다. 암호화할 텍스트를 입력하거나, 복호화할 Base64·hex 텍스트를 붙여 넣습니다. 형식은 자동으로 알아냅니다.
- 비밀번호를 입력하거나(‘생성’을 누르면 강력한 비밀번호를 만듭니다), 키·IV(hex)로 바꿔 64자리 키와 24자리 논스(일반 ChaCha20은 32자리 IV)를 입력하거나 생성합니다.
- ChaCha20-Poly1305를 그대로 두거나, openssl enc -chacha20과 맞추려면 ChaCha20을 고릅니다. 복호화할 때는 암호화할 때와 같은 모드, 비밀번호, 반복 횟수를 써야 합니다.
- 결과를 복사하거나 내려받습니다. 입출력 바꾸기를 누르면 결과를 입력 칸에 옮겨 다시 복호화해 볼 수 있습니다.
주요 기능
- RFC 8439 ChaCha20-Poly1305: 256비트 키, 12바이트 논스, 16바이트 태그
- OpenSSL 형식의 일반 ChaCha20: 4바이트 리틀 엔디언 카운터와 12바이트 논스로 된 16바이트 IV
- 비밀번호 방식: 무작위 솔트와 PBKDF2-HMAC-SHA256으로 키·논스를 만들고 openssl enc -pbkdf2의 Salted__ 머리글로 저장
- 키·IV 방식: 직접 정한 hex 키·논스, 또는 ‘생성’으로 만든 무작위 값
- Poly1305를 쓰면 비밀번호·키가 틀리거나 한 글자만 바뀌어도 엉뚱한 결과 대신 복호화 실패
- 패딩 없음: 암호문 길이는 원문과 같고, Poly1305에서는 16바이트 태그가 더해짐
- 일반 ChaCha20에서는 openssl enc -chacha20 명령 표시
개인정보는 안전한가요?
네. ChaCha20 계산은 브라우저 안의 WebAssembly가, 비밀번호 강화는 브라우저의 Web Crypto가 합니다. 입력한 텍스트, 비밀번호, 키, 논스는 업로드하거나 저장하지 않습니다.
자주 묻는 질문
ChaCha20-Poly1305와 ChaCha20 중 무엇을 쓰나요?
새로 암호화한다면 기본값인 ChaCha20-Poly1305를 쓰세요. Poly1305 태그 덕분에 한 글자만 바뀌어도, 비밀번호가 틀려도 복호화가 실패합니다. 일반 ChaCha20은 암호화만 하므로 키가 틀리면 오류 대신 읽을 수 없는 바이트가 나옵니다. openssl enc -chacha20처럼 그 방식을 쓰는 시스템과 맞출 때만 쓰세요.
OpenSSL로 복호화할 수 있나요?
일반 ChaCha20은 됩니다. 비밀번호 방식은 echo 'U2FsdGVkX1…' | openssl enc -d -chacha20 -pbkdf2 -iter 10000 -a -A, 키·IV 방식은 -pbkdf2 -iter 대신 -K <키 hex> -iv <IV hex>를 씁니다. ChaCha20-Poly1305는 안 됩니다. openssl enc가 AEAD 암호를 지원하지 않습니다. 이 페이지나 코드로 읽으세요. 키·IV 방식의 결과는 머리글 없이 암호문 뒤에 16바이트 태그가 붙은 형태입니다.
논스를 다시 쓰면 어떻게 되나요?
같은 키와 논스로 암호화한 두 메시지는 두 원문의 XOR을 드러내고, Poly1305 태그를 위조할 수 있게 합니다. 비밀번호 방식에서는 이런 실수가 생기지 않습니다. 암호화할 때마다 새 무작위 솔트를 써서 키, 논스, 결과가 매번 새로 만들어집니다. 키·IV 방식에서는 메시지마다 ‘생성’을 눌러 새 논스를 만드세요.
ChaCha20은 AES만큼 안전한가요?
네. ChaCha20-Poly1305와 AES-GCM은 모두 TLS 1.3의 표준 암호이고 현실적인 공격법이 없으며, AES 하드웨어가 없는 휴대폰에서는 ChaCha20이 더 빠른 경우가 많습니다. 약한 곳은 비밀번호입니다. 길고 무작위한 비밀번호를 쓰고, 양쪽을 모두 직접 다룬다면 600,000회 반복을 고르세요.
XChaCha20-Poly1305도 되나요?
아니요. libsodium에 있는 24바이트 논스 변형인 XChaCha20은 구성이 달라서 그 암호문은 여기서 복호화할 수 없습니다. 이 페이지는 RFC 8439의 12바이트 논스와 OpenSSL chacha20의 16바이트 IV를 받습니다. 텍스트가 아니라 파일을 암호화하려면 age 형식으로 ChaCha20-Poly1305를 쓰는 파일 암호화 도구를 쓰세요.