생성기

식별자와 테스트 값을 즉시 만들어 주는 도구 모음입니다. 모든 생성이 브라우저에서 이루어지므로 아무것도 전송되지 않습니다.

생성 도구 고르기

자격 증명에는 비밀번호 생성기를, 식별자에는 UUID 생성기를, 추첨과 주사위, 테스트 값에는 난수 생성기를 사용하세요. 세 가지 모두 브라우저의 암호학적 난수원에서 기각 샘플링으로 값을 뽑으므로 모든 결과의 확률이 같습니다.

표나 픽스처 파일을 채울 때는 목 데이터 생성기를, 링크나 Wi-Fi 정보를 스캔 가능한 형태로 만들 때는 QR 코드 생성기를, 일정이 실제로 언제 실행될지 확인할 때는 cron 표현식 도구를, 여러 사람이 추첨 과정을 지켜봐야 할 때는 돌림판을 사용하세요.

무작위성은 어디서 오는가

여기서 무작위로 만들어지는 모든 값은 브라우저의 암호학적으로 안전한 생성기인 crypto.getRandomValues에서 뽑아, 나머지 연산이 아니라 기각 샘플링으로 요청한 범위에 맞춥니다. 그래서 범위 안의 어떤 값도 다른 값보다 더 잘 나오지 않습니다. 비밀번호에는 보안 속성이고, 경품 추첨에는 그저 공정함입니다.

많은 코드가 가장 먼저 집어 드는 Math.random은 전혀 다른 물건입니다. 빠르고, 출력 몇 개만으로 예측할 수 있으며, 언어 명세에서 암호학적 용도로 쓰지 말라고 못 박아 두었습니다. 그것으로 비밀번호를 만드는 도구는 겉보기에는 멀쩡한데, 바로 그 점이 문제입니다.

생성한 데이터는 그대로 써도 안전해야 한다

픽스처는 테스트를 돌려도 실제 사람에게 닿지 않을 때만 쓸모가 있습니다. 그래서 목 데이터 생성기는 전화번호를 가상 용도로 예약된 블록에서, 이메일 주소와 URL을 RFC 2606의 예시 도메인에서, IP 주소를 라우팅되지 않는 문서용 범위에서 가져옵니다.

이는 운영 데이터를 복사해 이름만 지우는 솔깃한 대안을 반대하는 근거이기도 합니다. 식별자를 지운다고 데이터가 비식별화되지는 않으며, 정리한 사본도 접근 통제가 약한 곳에 놓인 운영 데이터 그대로입니다. 스키마에서 생성하면 형태는 맞으면서 출처가 전혀 없는 데이터를 얻습니다.

값이 아니라 명세를 만들어 내는 도구도 있다

cron 표현식과 QR 코드는 무작위 출력이 아니라 나중에 다른 시스템이 해석할 산출물입니다. 여기서 중요한 질문은 그 해석이 당신의 의도와 맞느냐입니다. cron 도구가 필드만 해석하지 않고 다음 실행 시각을 나열하는 것도, QR 생성기가 선택한 버전과 오류 정정 수준을 알려 주는 것도 그 때문입니다.

내보내기 전에 현실과 맞춰 보세요. 누구나 걸려 넘어지는 일과 요일 조합은 실행 날짜를 읽어 확인하고, 인쇄할 코드는 천 장을 주문하기 전에 서너 종류의 휴대폰으로 스캔해 보세요.