diff --git a/src/main/java/com/kamco/cd/kamcoback/auth/BCryptSaltGenerator.java b/src/main/java/com/kamco/cd/kamcoback/auth/BCryptSaltGenerator.java deleted file mode 100644 index 8964d5a8..00000000 --- a/src/main/java/com/kamco/cd/kamcoback/auth/BCryptSaltGenerator.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.kamco.cd.kamcoback.auth; - -import java.security.SecureRandom; -import java.util.Base64; - -public class BCryptSaltGenerator { - - public static String generateSaltWithEmployeeNo(String employeeNo) { - - // bcrypt salt는 16바이트(128비트) 필요 - byte[] randomBytes = new byte[16]; - new SecureRandom().nextBytes(randomBytes); - - String base64 = Base64.getEncoder().encodeToString(randomBytes); - - // 사번을 포함 (22자 제한 → 잘라내기) - String mixedSalt = (employeeNo + base64).substring(0, 22); - - // bcrypt 포맷에 맞게 구성 - return "$2a$10$" + mixedSalt; - } -} diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/CommonStringUtils.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/CommonStringUtils.java index c891325f..c77bd6aa 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/CommonStringUtils.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/CommonStringUtils.java @@ -1,11 +1,12 @@ package com.kamco.cd.kamcoback.common.utils; -import com.kamco.cd.kamcoback.auth.BCryptSaltGenerator; import java.util.regex.Pattern; import org.mindrot.jbcrypt.BCrypt; public class CommonStringUtils { + private static final int BCRYPT_COST = 10; + /** * 영문, 숫자, 특수문자를 모두 포함하여 8~20자 이내의 비밀번호 * @@ -22,11 +23,12 @@ public class CommonStringUtils { * 패스워드 암호화 * * @param password 암호화 필요한 패스워드 - * @param employeeNo salt 생성에 필요한 사원번호 * @return */ - public static String hashPassword(String password, String employeeNo) { - String salt = BCryptSaltGenerator.generateSaltWithEmployeeNo(employeeNo.trim()); - return BCrypt.hashpw(password.trim(), salt); + public static String hashPassword(String password) { + if (password == null) { + throw new IllegalArgumentException("password must not be null"); + } + return BCrypt.hashpw(password.trim(), BCrypt.gensalt(BCRYPT_COST)); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java index e257edeb..326519aa 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java @@ -34,7 +34,7 @@ public class InferenceResultShpService { public InferenceResultShpDto.FileCntDto createShpFile() { // TODO 파일 경로는 정해지면 수정, properties 사용 - String baseDir = System.getProperty("user.home") + "/export"; + String baseDir = System.getProperty("user.home") + "/detect/result"; // TODO 배치 실행으로 변경 필요 int batchSize = 100; @@ -62,8 +62,9 @@ public class InferenceResultShpService { "%d_%d_%d_%d", first.getStage(), first.getMapId(), first.getInput1(), first.getInput2()); - String shpBasePath = baseDir + "/shp/" + baseName; - String geoJsonPath = baseDir + "/geojson/" + baseName + ".geojson"; + String baseDir2 = "/" + first.getInput1() + "_" + first.getInput2() + "/" + first.getStage(); + String shpBasePath = baseDir + baseDir2 + "/shp/" + baseName; + String geoJsonPath = baseDir + baseDir2 + "/geojson/" + baseName + ".geojson"; try { // Writer가 "이번 호출에서 write한 개수"를 반환 diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java index 1aa36339..699b40e6 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java @@ -1,6 +1,5 @@ package com.kamco.cd.kamcoback.postgres.core; -import com.kamco.cd.kamcoback.auth.BCryptSaltGenerator; import com.kamco.cd.kamcoback.common.enums.StatusType; import com.kamco.cd.kamcoback.common.enums.error.AuthErrorCode; import com.kamco.cd.kamcoback.common.exception.CustomApiException; @@ -43,10 +42,8 @@ public class MembersCoreService { throw new DuplicateMemberException(Field.EMPLOYEE_NO, addReq.getEmployeeNo()); } - // salt 생성, 사번이 salt - String salt = BCryptSaltGenerator.generateSaltWithEmployeeNo(addReq.getEmployeeNo().trim()); // 패스워드 암호화, 초기 패스워드 고정 - String hashedPassword = BCrypt.hashpw(addReq.getPassword(), salt); + String hashedPassword = CommonStringUtils.hashPassword(addReq.getPassword()); MemberEntity memberEntity = new MemberEntity(); memberEntity.setUserId(addReq.getEmployeeNo()); @@ -85,8 +82,7 @@ public class MembersCoreService { throw new CustomApiException("WRONG_PASSWORD", HttpStatus.BAD_REQUEST); } - String password = - CommonStringUtils.hashPassword(updateReq.getPassword(), memberEntity.getEmployeeNo()); + String password = CommonStringUtils.hashPassword(updateReq.getPassword()); memberEntity.setStatus(StatusType.PENDING.getId()); memberEntity.setLoginFailCount(0); @@ -111,8 +107,7 @@ public class MembersCoreService { throw new CustomApiException(AuthErrorCode.LOGIN_PASSWORD_MISMATCH); } - String password = - CommonStringUtils.hashPassword(initReq.getNewPassword(), memberEntity.getEmployeeNo()); + String password = CommonStringUtils.hashPassword(initReq.getNewPassword()); memberEntity.setPassword(password); memberEntity.setStatus(StatusType.ACTIVE.getId()); diff --git a/src/main/resources/db/migration/dump-kamco_cds-202512261634.tar b/src/main/resources/db/migration/dump-kamco_cds-202512291746.tar similarity index 95% rename from src/main/resources/db/migration/dump-kamco_cds-202512261634.tar rename to src/main/resources/db/migration/dump-kamco_cds-202512291746.tar index e7818316..b345d81a 100644 Binary files a/src/main/resources/db/migration/dump-kamco_cds-202512261634.tar and b/src/main/resources/db/migration/dump-kamco_cds-202512291746.tar differ