SheepDev

해시·ID·난수

무작위 ID 길이를 충돌 확률로 판단하기

사용할 도구

짧은 무작위 ID는 편하지만 중복이 걱정됩니다. 후보 수뿐 아니라 생성 건수와 균등·독립 여부가 필요합니다. 이론 엔트로피·충돌 도구에서 조건을 따로 바꾸세요. 결과는 명시한 모델 계산이지 실제 ID 체계의 안전 인증이 아닙니다.

16종 문자를 8자리 쓰면 후보는 2³²

16진 ID 후보 공간
alphabet = 16
length = 8
16⁸ = 4,294,967,296
log₂(16⁸) = 32 bits

문자 수 16·길이 8이면 0~9와 a~f를 균등 독립 선택할 때 4294967296가지, 32비트입니다. 8글자가 8비트는 아닙니다. 십진 숫자 여덟 자리와 다르며 고정 하이픈은 길이만 늘리고 선택지는 늘리지 않습니다.

저장·비교 규칙이 실제 구분하는 문자 수를 세세요. 대소문자 무시 저장소라면 A와 a를 다른 후보로 세면 안 됩니다. 생성 집합과 후속 정규화를 확인하며 도구가 실제 문자열 목록에서 추정해 주지는 않습니다.

생성 수가 늘면 비교 쌍도 늘어납니다

10,000개 ID의 쌍 수
k = 10,000
k × (k − 1) ÷ 2 = 49,995,000 pairs

16종·8자리·10000개에서 적어도 한 충돌 확률은 약 1.16%입니다. 후보 약 43억에 비해 높아 보이지만 고정값 하나와의 일치가 아닌 어떤 쌍이든 일치하는 질문입니다. 만 개에는 약 오천만 쌍이 있습니다.

collisionProbability는 비율이라 0.01은 1%입니다. 개별 ID의 1%가 중복된다는 뜻이 아니라 생성 집합 전체에 하나 이상 중복이 있을 확률입니다.

생성 수를 고정해 길이 비교하기

16종이면 한 자리마다 공간이 16배입니다. 10000개를 고정하고 8·9·10자리를 비교하세요. 문자 수와 건수까지 바꾸면 원인이 흐려집니다. 하나씩 바꾸고 후보를 정하면 예상 최대 건수도 확인하세요.

중복이 문제가 되는 전체 이름 공간의 수를 넣으세요. 하루 만 개를 수년 저장하면 하루치만으로 부족합니다. 공간 분리로 재사용 가능한지는 식별 규칙에 달리며 날짜 접두사만 붙이면 해결된다고 가정하지 마세요.

실제 생성도 균등·독립인지 확인하기

모델은 균등 독립 선택입니다. 시각·순번·편향 난수·반복 시드 수열에는 그대로 적용할 수 없습니다. 필수 문자 종류 같은 제약도 후보 집합을 바꿉니다. 실제 생성 코드와 모델을 맞추세요.

큰 건수에서는 근사 적용 범위도 확인합니다. 확률 미산출은 0이 아니며 후보 수가 나왔다고 모든 값이 계산된 것도 아닙니다. method와 미산출 필드를 보고 근사 정밀도를 과장하지 마세요.

충돌이 적다고 비밀 토큰에 적합한 것은 아닙니다

공개 상품 ID 중복 방지와 비밀번호 재설정 토큰 추측 방지는 다릅니다. 후자는 예측 불가성·생성·시도 제한·만료를 별도로 고려합니다. 도구는 실제 비밀번호 안전성 평가가 아닌 매개변수 모델 계산입니다.

허용 위험과 중복 탐지·재생성 절차를 정하세요. 확률이 낮아도 유일성 제약이나 동시성 처리가 불필요해지지는 않습니다. 예시는 길이 비교이며 모든 서비스의 권장 글자 수가 아닙니다.

참고 자료

사용할 도구

가이드 →