[Java] HmacUtils, Mac이 thread-safe하지 않다?
일반적으로 Hash, HMAC 만들 때는 아래 Util 클래스 사용한다.
- org.apache.commons.codec.digest.DigestUtils
- org.apache.commons.codec.digest.HmacUtils
그러나 HmacUtils은 thread-safe 하지 않다.
- 정확히는, HmacUtils는 thread-safe 하지만 그 안에서 사용되는 Mac이 thread-safe 하지 않다.
- 그래서 동시에 호출되는 경우 hmac 결과값이 잘못 반환 될 수 있다. (한 쪽의 결과값이 잘못되거나, 양 쪽 모두 결과값이 잘못 되거나.)
- 그럼 어떻게 써야 하나?
- https://waseemh.github.io/thread-safe-mac-calculation 이런 식으로 clone해서 사용해도 되지만,
- 그냥 매번 HmacUtils을 생성(내부에서 Mac을 생성)해서 사용해도 생성 비용이 비싸지 않다. (1ms 미만으로 성능을 신경 쓸 만큼 차이가 나지 않는다.)
'Java Stack > Java' 카테고리의 다른 글
[Java] 양방향 참조 Enum 초기화 순서에 따른 문제 (순환 참조) (0) | 2022.04.02 |
---|---|
[Java] Jackson 프로퍼티명 snake_case <-> camelCase 변환 (0) | 2021.08.01 |
[Java] Collection 초기화 (0) | 2020.11.02 |
[Java] Enum to Json / Enum to Object (0) | 2020.04.27 |
[Spring] resources 경로 문제 (0) | 2020.03.18 |