AES 암호화

AES 암호화 도구는 PHP 서버와 브라우저(CryptoJS) 사이에서 AES-128-CBC 암호화·복호화가 서로 호환되는지 양방향으로 확인하는 테스트 페이지입니다.

개발 도구 무료 · 설치 없음

세션 키 (서버 발급, 페이지 세션별 고정)

PHP → JS 복호화 테스트

원문 (서버)
-
PHP 암호문
-
JS 복호 결과
-

JS → PHP 암호화 테스트

준비 완료

AES 암호화 도구로 할 수 있는 것

AES 암호화 도구는 서버(PHP OpenSSL)와 브라우저(JavaScript CryptoJS)가 같은 키로 AES-128-CBC 암호문을 주고받을 수 있는지 검증하는 테스트 페이지입니다. 서버가 암호화한 문장을 브라우저에서 풀어 보고, 반대로 브라우저에서 암호화한 값을 서버로 보내 복호화 결과를 돌려받습니다. 로그인 폼 값을 전송 전에 한 번 더 암호화하는 구조를 만들 때, 양쪽 설정이 맞는지 눈으로 확인하는 용도입니다.

사용 방법

  1. 페이지를 열면 서버가 발급한 세션 키(Base64)가 상단에 표시됩니다. 새 키가 필요하면 ↻ 재발급을 누릅니다.
  2. PHP → JS 복호화 테스트 영역에 서버 원문과 PHP 암호문이 나타납니다. JS 에서 복호화를 누르면 브라우저가 푼 결과가 오른쪽 칸에 나옵니다.
  3. JS → PHP 암호화 테스트 영역의 ID, PW 칸에 테스트용 값을 입력합니다.
  4. 암호화 → 서버 전송 → 복호화 버튼을 누르면 아래 로그 창에 JS 암호문과 PHP 가 복호화한 결과가 차례로 표시됩니다.

이럴 때 유용합니다

PHP 의 openssl_encrypt 와 CryptoJS 는 키 형식, IV, 패딩 방식이 하나만 어긋나도 복호화가 깨집니다. 직접 구현하다 막혔을 때, 이 페이지에서 정상 동작하는 조합을 확인하고 내 코드와 비교해 보면 원인을 좁히기 쉽습니다. 원문과 복호 결과가 같으면 키 길이(128비트), CBC 모드, PKCS7 패딩 설정이 양쪽에서 일치한다는 뜻입니다.

알아 두면 좋은 점

이 페이지는 호환성 확인용 데모입니다. IV 를 0으로 채운 고정값으로 쓰고 있어, 같은 키로 같은 문장을 암호화하면 늘 같은 암호문이 나옵니다. 실제 서비스에는 매번 무작위 IV 를 만들어 암호문과 함께 보내는 방식을 권합니다. 또 키가 서버에서 브라우저로 그대로 내려오므로 HTTPS 를 대신하는 보안 수단이 될 수는 없습니다.

키는 PHP 세션에 묶여 있고, 재발급 버튼은 세션 쿠키를 지운 뒤 새 키를 받아 옵니다. ID·PW 칸의 값은 암호화된 상태로 이 사이트 서버에 전송되어 복호화되므로, 실제 사용하는 비밀번호는 넣지 마세요.

자주 묻는 질문

JS 복호 결과가 비어 있거나 실패로 나와요. 키를 재발급한 직후 화면의 암호문이 이전 키로 만든 값일 수 있습니다. 페이지를 새로고침해 키와 암호문을 다시 받은 뒤 시도하세요.

암호문은 어떤 형식인가요? Base64 문자열입니다. PHP 쪽도 같은 Base64 형식으로 주고받도록 맞춰져 있습니다.

도구 전체 보기 →