흔히 사용하는 Math.random()은 사실 알고리즘으로 계산된 "의사 난수"로, 이론적으로는 예측이 가능합니다. 비밀번호처럼 보안이 중요한 상황에서는 충분하지 않습니다.
이 도구는 대신 Web Crypto API의 crypto.getRandomValues()를 사용합니다. OS 레벨의 엔트로피(하드웨어 노이즈)를 기반으로 생성되는 난수로, 예측이 불가능하고 암호 용도에도 안전합니다.
생성 로직은 단순합니다. 선택한 문자 종류(대문자·소문자·숫자·특수문자)를 하나로 이어붙인 "문자셋"을 만들고, 난수값을 n % 문자셋 길이로 나눈 나머지를 인덱스로 삼아 문자를 고릅니다. 이 과정을 지정한 문자 수만큼 반복합니다.
문자 수와 문자 종류 설정은 localStorage에 저장되어, 다음에 열어도 같은 설정이 복원됩니다.