bibimbap/.serena/memories/java-crypto-verify-via-jdk-...

1.5 KiB

호스트 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.