UTILS.
100% 브라우저 내 실행
🧂

scrypt KDF 해시 생성기 & 검증기

설정 가능한 N, r, p 코스트로 비밀번호에서 scrypt 키를 유도하거나, 저장된 scrypt 문자열과 대조해 비밀번호를 검증하세요. 완전히 브라우저에서 실행됩니다.

비밀번호는 100% 브라우저에서 해시됩니다 — 아무것도 업로드되지 않습니다.

— 여기에 결과가 표시됩니다 —

이 도구에 대하여

scrypt KDF 해시 생성기 & 검증기는 scrypt 출력을 브라우저에서 로컬로 유도하고 확인합니다. Colin Percival이 설계하고 RFC 7914로 표준화한 scrypt는 메모리 하드 키 유도 함수입니다: 그 비용이 의도적으로 메모리 대역폭에 지배되어 맞춤형 크래킹 하드웨어가 얻는 이점이 거의 없습니다. 파이프라인은 비밀번호를 확장하는 PBKDF2-HMAC-SHA256, 대규모 순차 메모리 사용을 강제하기 위해 BlockMix와 Salsa20/8 코어 위에 구축된 ROMix 함수, 그리고 선택한 길이의 유도 키를 생성하는 최종 PBKDF2-HMAC-SHA256입니다.

생성 모드는 crypto.getRandomValues에서 16바이트의 무작위 솔트를 읽고 세 가지 코스트 파라미터로 scrypt를 실행합니다: N은 CPU/메모리 비용이며 2의 거듭제곱이어야 하고(기본값 16384 = 2^14), r은 블록 크기(기본값 8), p는 병렬화 팩터(기본값 1)입니다. 메모리 사용량은 대략 128 · N · r 바이트 — 기본값에서 약 16 MiB — 이며, 도구는 설정이 256 MiB를 초과하면 경고합니다. 출력은 자기 기술적 문자열 $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key>로, ln = log2(N)이므로 검증에 필요한 모든 파라미터가 해시와 함께 담깁니다.

검증 모드는 그 문자열에서 ln, r, p, 솔트, 저장된 키를 파싱하고, 후보 비밀번호로 유도 키를 재계산한 다음, 상수 시간 비교로 일치 또는 불일치를 보고합니다. scrypt 코어는 브라우저의 엄격한 보안 정책 아래 eval 없는 WebAssembly 빌드로 실행되므로, 비밀번호는 100% 브라우저에서 처리되며 아무것도 업로드되지 않습니다.

자주 묻는 질문

N이 2의 거듭제곱이어야 하는 이유는 무엇인가요?
scrypt의 ROMix 단계는 정확히 N개 블록의 테이블을 인덱싱하며 그 integerify-and-mask 주소 지정을 위해 N이 2의 거듭제곱임에 의존합니다. 도구는 2의 거듭제곱이 아닌 값을 거부합니다. 일반적 선택은 대화형 용도에 16384(2^14), 파일 암호화에 1048576(2^20)입니다.
scrypt는 메모리를 얼마나 사용하나요?
대략 128 · N · r 바이트입니다. 기본값 N=16384, r=8에서는 약 16 MiB입니다. 브라우저가 이를 실제로 할당하므로 큰 N이나 r 값은 저RAM 기기에서 느리거나 실패할 수 있습니다 — 도구는 256 MiB를 초과하면 경고합니다.
r과 p는 무엇을 제어하나요?
r은 블록 크기로, 메모리 사용량과 블록당 순차 작업량을 모두 조정합니다. r을 높이면 N과 함께 메모리 비용이 올라갑니다. p는 병렬화 팩터로 p개의 독립적 scrypt 계산을 실행하며, 인스턴스당 메모리 사용량을 늘리지 않고 CPU 비용을 높입니다.
생성된 해시는 어떤 형식인가요?
자기 기술적 문자열 $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>입니다. 모든 파라미터가 내장되므로 검증 모드에는 그 문자열과 비밀번호만 필요합니다. 모든 계산은 로컬입니다 — 아무것도 업로드되지 않습니다.

더 많은 도구