AES-256-GCM 암호화·복호화 테스트

패스프레이즈와 PBKDF2 키 파생을 사용해 브라우저에서 AES-256-GCM 텍스트 암호화를 테스트합니다.

// about

도구 소개

이 도구는 AES-256-GCM으로 텍스트를 암호화하고 PBKDF2-SHA-256으로 패스프레이즈에서 키를 파생합니다. 학습과 로컬 테스트용이며 실서비스 키 관리의 대체품이 아닙니다.

사용 방법

  1. 암호화할 텍스트를 입력하거나 복호화할 페이로드를 붙여넣습니다.
  2. 같은 패스프레이즈를 입력하고 암호화 또는 복호화를 선택합니다.
  3. 결과를 복사하되 실서비스 시크릿을 공개 도구에서 재사용하지 마세요.

이 도구를 찾는 이유

  • 평문을 업로드하지 않고 AES 암복호화를 테스트합니다.
  • 패스프레이즈와 PBKDF2 반복 횟수를 사용해 로컬에서 실험할 수 있습니다.
  • 출력 결과에는 이 도구가 복호화하는 데 필요한 정보가 포함됩니다.

자주 묻는 질문 (FAQ)

실서비스 시크릿에 사용해도 되나요?

아니요. 실서비스 데이터에는 검토된 암호 설계와 관리형 키 보관소를 사용하세요.

가이드 · 보안 · 5분 읽기

해시 함수 쉽게 이해하기: MD5, SHA-1, SHA-256의 차이와 올바른 사용법

소프트웨어 다운로드 페이지의 SHA-256 체크섬, Git 커밋 ID, 블록체인 주소까지 모두 해시 함수의 결과입니다. 해시가 암호화와 어떻게 다른지, 어떤 알고리즘을 언제 골라야 하는지 정리합니다.

해시 함수는 길이가 제각각인 입력을 받아 항상 같은 길이의 짧은 값(해시값, 다이제스트)을 만들어 내는 함수입니다. 한 글자짜리 문장이든 수 GB짜리 동영상이든 SHA-256에 넣으면 결과는 언제나 256비트, 16진수로 64글자입니다.

SHA-256("hello")  = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("hello!") = ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b
MD5("hello")      = 5d41402abc4b2a76b9719d911017c592
해시 함수의 세 가지 성질, MD5와 SHA-1이 더 이상 보안용으로 쓰이지 않는 이유, 파일 무결성 확인과 비밀번호 저장에서 해시를 쓰는 올바른 방법을 설명합니다.
가이드 읽기 →
AI로 직접 만들기

이 도구를 AI로 직접 만들어 보세요

나만의 버전이 필요하다면 아래 작업지시 프롬프트를 AI 채팅에 붙여 넣거나, 스킬 파일을 AI 코딩 에이전트에 저장하세요. 저희가 이 도구를 만들 때 정리한 기능, 예외 상황, 테스트 케이스가 그대로 담겨 있습니다.

AI 작업지시 프롬프트

Claude, ChatGPT, Gemini 같은 AI 채팅에 그대로 붙여 넣으세요.

당신은 숙련된 풀스택 웹 개발자입니다. 아래 요구사항에 맞춰 "AES 암호화 테스트기" 웹 도구를 만들어 주세요.

## 목표

비밀번호(또는 키)로 텍스트를 AES-256-GCM 암호화·복호화하는 테스트 도구를 만든다.

## 핵심 기능

- 암호화/복호화 모드
- 비밀번호에서 PBKDF2(충분한 반복 횟수)로 키 유도
- 매번 무작위 솔트와 12바이트 IV 생성
- 솔트+IV+암호문을 하나의 Base64 문자열로 출력
- 결과 복사

## 입력

- 평문 또는 암호문(Base64)
- 비밀번호

## 출력

- 암호화 결과(Base64) 또는 복호화된 평문
- 사용한 알고리즘·파라미터 요약

## 예외 상황과 처리 규칙

- 비밀번호가 틀리거나 암호문이 변조되면 '인증 실패' 메시지
- 빈 비밀번호 금지
- 같은 평문도 매번 다른 암호문이 나온다는 점을 안내
- 키와 평문을 서버로 보내지 않도록 Web Crypto API 사용

## 구현 조건

- 서버 없이 브라우저에서 동작하는 단일 페이지(HTML, CSS, JavaScript)로 만들고, 입력 데이터를 외부로 전송하지 마세요.
- 모바일에서도 쓰기 편한 반응형 UI로 만들고, 입력 요소에는 레이블을 달아 키보드로도 조작할 수 있게 해 주세요.
- 결과에는 '복사' 버튼을 달고, 잘못된 입력에는 이해하기 쉬운 한국어 오류 메시지를 보여 주세요.
- 핵심 로직은 UI와 분리된 함수로 작성해 단위 테스트를 할 수 있게 해 주세요.

## 완료 기준 (테스트 케이스)

- 암호화 후 같은 비밀번호로 복호화하면 원문과 동일
- 암호문 한 글자를 바꾸면 복호화 실패
- 같은 입력을 두 번 암호화하면 결과가 다름

먼저 구현 계획을 5줄 이내로 설명한 다음 전체 코드를 작성하고, 마지막에 위 테스트 케이스를 확인하는 방법을 알려 주세요.

스킬 (SKILL.md)

Claude Code 같은 AI 코딩 에이전트에서 .claude/skills/build-encryption-tester/SKILL.md 경로로 저장하면, 이 도구를 만들거나 고칠 때마다 다시 쓸 수 있습니다.

---
name: build-encryption-tester
description: AES 암호화 테스트기 도구를 새로 만들거나 수정할 때 사용합니다. 비밀번호(또는 키)로 텍스트를 AES-256-GCM 암호화·복호화하는 테스트 도구를 만든다.
---

# AES 암호화 테스트기 만들기

## 목표

비밀번호(또는 키)로 텍스트를 AES-256-GCM 암호화·복호화하는 테스트 도구를 만든다.

## 작업 순서

1. 아래 필수 기능, 입력, 출력을 확인하고 빠진 정보가 있으면 먼저 질문합니다.
2. 핵심 로직을 UI와 분리된 순수 함수로 구현합니다.
3. 검증 목록의 테스트 케이스로 로직을 확인합니다.
4. 입력 폼, 결과 영역, 복사 버튼을 갖춘 반응형 UI를 만듭니다.
5. 규칙에 적힌 예외 상황을 하나씩 재현해 보고 오류 메시지를 다듬습니다.

## 핵심 기능

- 암호화/복호화 모드
- 비밀번호에서 PBKDF2(충분한 반복 횟수)로 키 유도
- 매번 무작위 솔트와 12바이트 IV 생성
- 솔트+IV+암호문을 하나의 Base64 문자열로 출력
- 결과 복사

## 입력

- 평문 또는 암호문(Base64)
- 비밀번호

## 출력

- 암호화 결과(Base64) 또는 복호화된 평문
- 사용한 알고리즘·파라미터 요약

## 규칙

- 비밀번호가 틀리거나 암호문이 변조되면 '인증 실패' 메시지
- 빈 비밀번호 금지
- 같은 평문도 매번 다른 암호문이 나온다는 점을 안내
- 키와 평문을 서버로 보내지 않도록 Web Crypto API 사용
- 서버 없이 브라우저에서 동작하는 단일 페이지(HTML, CSS, JavaScript)로 만들고, 입력 데이터를 외부로 전송하지 마세요.

## 검증

- [ ] 암호화 후 같은 비밀번호로 복호화하면 원문과 동일
- [ ] 암호문 한 글자를 바꾸면 복호화 실패
- [ ] 같은 입력을 두 번 암호화하면 결과가 다름

AI에게 맡길 때 팁

  • 첫 줄에 사용 중인 기술(예: React, Vue, 순수 HTML)을 적으면 프로젝트에 맞는 코드를 받을 수 있습니다.
  • 코드를 받기 전에 목록의 테스트 케이스를 실제로 실행하고 결과를 보여 달라고 요청하세요.
  • 실제 비밀번호, 고객 데이터, API 키는 프롬프트에 넣지 말고 예시 값으로 바꿔 쓰세요.