핵심 원칙: 현재 이 페이지 코드는 사용자가 입력한 원문, 비밀번호, 결과 문자열을 서버에 업로드하거나 서버에 저장하는 방식으로 짜여 있지 않습니다.
브라우저 내부 처리: 암호화와 복호화는 브라우저의 Web Crypto 기능으로 현재 기기 안에서만 처리하며, 서버가 대신 연산하는 구조가 아닙니다.
AI 코드 확인: 현재 페이지 코드 기준으로 서버로 보내는 POST 요청은 버튼 카운트 집계(app_counter_action=string_button_counter) 정도이고, 방문자 수 집계와 버튼 카운트 파일을 다루는 루틴만 있으며 원문·비밀번호·결과 문자열 자체를 저장하는 처리나 업로드 루틴은 넣지 않았습니다.
브라우저 임시 보관: 현재 코드에는 원문·비밀번호·결과 문자열을 localStorage, sessionStorage, IndexedDB에 저장하는 루틴을 넣지 않았습니다. 다만 버튼 카운트 동기화용 작은 상태값은 sessionStorage에 잠시 남을 수 있습니다.
서버가 받는 범위: 서버 쪽에 남을 수 있는 것은 페이지 접속 기록, 방문자 수 집계, 버튼 카운트 집계, 장기 방문자 식별용 쿠키 같은 부가 정보이며, 원문·비밀번호·결과 문자열 자체는 그 범위에 포함되지 않도록 구성했습니다.
기기 흔적: 사용 중 화면에 표시된 내용과 사용자가 복사한 결과 문자열은 브라우저 메모리나 운영체제 클립보드에 잠시 남을 수 있으며, 그 범위는 사용자 기기 환경에 따라 달라질 수 있습니다.
전송 구간 보호: 이 페이지는 HTTPS 환경에서 사용하는 편이 좋습니다. HTTPS가 아니면 페이지를 불러오는 구간의 보호 수준이 떨어질 수 있습니다.
📘 기본 안내
페이지 기능: 이 페이지는 문자열을 암호화하거나 다시 복호화하는 기능의 페이지입니다.
비밀번호 없음: 비밀번호를 비워 두면 결과 문자열만 있어도 다시 원문으로 복호화할 수 있습니다.
비밀번호 사용: 비밀번호를 입력하면 결과 문자열과 비밀번호를 둘 다 알아야만 다시 복호화할 수 있습니다.
비밀번호 없는 모드 성격: 결과 문자열만 있으면 다시 원문으로 되돌릴 수 있으므로, 이 모드는 편의성은 높지만 비밀 보호용 모드는 아닙니다.
🔐 암호화 방식
사용 기술: 브라우저의 Web Crypto 기능을 사용하며, 비밀번호를 입력하는 모드에서는 AES-256-GCM 방식으로 내용을 암호화합니다.
AES-256-GCM: 같은 키로 암호화와 복호화를 수행하는 256비트 대칭키 방식이며, 내용을 읽지 못하게 숨기는 기능과 암호문이 중간에 바뀌었는지 검사하는 변조 감지 기능을 함께 제공합니다. 따라서 결과 문자열이 손상되었거나 비밀번호가 다르면 정상 복호화되지 않습니다.
비밀번호 처리: 비밀번호는 그대로 쓰지 않고 PBKDF2-SHA-256으로 여러 번 섞어 전용 키를 만든 뒤 사용합니다. 현재 코드는 310000회 반복으로 설정되어 있습니다.
변조 감지: AES-GCM은 내용을 숨기는 것뿐 아니라, 암호문이 중간에 바뀌었는지도 함께 검사합니다. 암호문이 손상되었거나 비밀번호가 틀리면 정상 복호화가 되지 않습니다.