# 호스트 JDK 부재 시 Java 암호 로직 교차검증 패턴

bibimbap 호스트엔 JDK 없음(빌드/실행은 Docker 경로). 그래서 생성한 password_hash 등이
**실제 Java 코드 경로로 검증되는지**를 추정으로 닫지 말고 컨테이너로 실행 증거를 만든다.

## 패턴
1. 검증 대상 로직을 단일 .java 로 복제(예: `UserController.verifyPassword` 그대로).
2. JRE-only 이미지(`bibimbap-app:latest`)는 `java File.java` 소스모드 불가
   (`jdk.compiler` 모듈 없음 → `InternalError: Module jdk.compiler not in boot Layer`).
3. JDK 이미지로 컴파일+실행:
   ```
   docker run --rm -v /tmp/HashVerify.java:/tmp/HashVerify.java:ro \
     --entrypoint sh eclipse-temurin:21-jdk \
     -c 'javac -d /out /tmp/HashVerify.java && java -cp /out HashVerify'
   ```
4. **positive + negative 둘 다** 확인(올바른 비번=true, 틀린 비번=false). 한쪽만 true 는 불충분.

## 왜
- self-report("스펙상 맞을 것") 대신 실행 증거로 AC 를 닫음.
- Python `hashlib.pbkdf2_hmac('sha256',...)` 와 Java `PBKDF2WithHmacSHA256` 는 byte-identical 이지만,
  "동일하다"는 가정 자체를 실제 Java 경로 실행으로 검증.
- 호스트 `timeout` 명령은 macOS 기본 미존재(gtimeout). `/usr/bin/java` 는 JRE 없는 스텁일 수 있음.

일반화: 호스트에 런타임 없을 때 "추정으로 닫기" 대신 throwaway 컨테이너로 실행 증거 확보.
근거 세션: .atp/work-session/20260618-121419.
