From a206dae5622f6c3fb2006c2838cccf712a0c8ecd Mon Sep 17 00:00:00 2001 From: Rinjae Date: Thu, 25 Sep 2025 19:49:05 +0900 Subject: [PATCH] =?UTF-8?q?safedb=20=EB=94=94=EB=B2=84=EA=B9=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eactive/ext/kjb/safedb/SafeDBFaker.java | 11 +++++---- .../eactive/ext/kjb/safedb/SafeDBWrapper.java | 24 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/eactive/ext/kjb/safedb/SafeDBFaker.java b/src/main/java/com/eactive/ext/kjb/safedb/SafeDBFaker.java index dc1fd90..fbc6135 100644 --- a/src/main/java/com/eactive/ext/kjb/safedb/SafeDBFaker.java +++ b/src/main/java/com/eactive/ext/kjb/safedb/SafeDBFaker.java @@ -24,7 +24,7 @@ public abstract class SafeDBFaker { } } - public byte[] decrypt(String userId, String table, String column, String data) { + public byte[] decrypt(String userId, String table, String column, byte[] data) { if (SafeDBColumns.PSWD.isEqualsIgnoreCase(column)) { // 비밀번호는 복호화하지 않음 throw new UnsupportedOperationException("Password decryption is not supported."); @@ -64,13 +64,12 @@ public abstract class SafeDBFaker { return Base64.getEncoder().encodeToString(this.aes256Encrypt(data.getBytes())); } - private byte[] aes256Decrypt(String encryptedData) { + private byte[] aes256Decrypt(byte[] encryptedData) { try { Cipher cipher = javax.crypto.Cipher.getInstance("AES"); SecretKeySpec keySpec = new javax.crypto.spec.SecretKeySpec(AES_256_KEY.getBytes(), "AES"); cipher.init(javax.crypto.Cipher.DECRYPT_MODE, keySpec); - byte[] decodedBytes = java.util.Base64.getDecoder().decode(encryptedData); - return cipher.doFinal(decodedBytes); + return cipher.doFinal(encryptedData); } catch (Exception e) { throw new RuntimeException("Error during AES decryption", e); } @@ -79,4 +78,8 @@ public abstract class SafeDBFaker { public String encryptString(String safedb, String s, String notRnno, String data) { return new String(this.encrypt(safedb, s, notRnno, data.getBytes())); } + + protected String decryptString(String userId, String table, String column, String data) { + return new String(this.decrypt(userId, table, column, data.getBytes())); + } } diff --git a/src/main/java/com/eactive/ext/kjb/safedb/SafeDBWrapper.java b/src/main/java/com/eactive/ext/kjb/safedb/SafeDBWrapper.java index 17cc23b..7f2b817 100644 --- a/src/main/java/com/eactive/ext/kjb/safedb/SafeDBWrapper.java +++ b/src/main/java/com/eactive/ext/kjb/safedb/SafeDBWrapper.java @@ -81,7 +81,7 @@ public class SafeDBWrapper extends SafeDBBroker { } } - + @Override public byte[] encrypt(String userId, String table, String column, byte[] data) throws SafeDBWrapperSdkException { if (isRealSafeDB) { try { @@ -95,6 +95,7 @@ public class SafeDBWrapper extends SafeDBBroker { } } + @Override public String encryptString(String userId, String tables, String column, String data) { if (isRealSafeDB) { try { @@ -111,14 +112,11 @@ public class SafeDBWrapper extends SafeDBBroker { return this.encryptString("SAFEDB", "SAFEDB.POLICY", "NOT_RNNO", data); } - - public byte[] decrypt(String userId, String table, String column, String data) throws SafeDBWrapperSdkException { + @Override + public byte[] decrypt(String userId, String table, String column, byte[] data) throws SafeDBWrapperSdkException { if (isRealSafeDB) { try { - log.debug("[SafeDBWrapper] String : {}", data); - byte[] dataBytes = Base64.getDecoder().decode(data); - log.debug("[SafeDBWrapper] Decode data : {}", dataBytes); - return safedb.decrypt(userId, table, column, dataBytes); + return safedb.decrypt(userId, table, column, data); } catch (Exception e) { throw new SafeDBWrapperException("[SafeDBWrapper] Decrypt error: " + e.getMessage(), e); } @@ -127,6 +125,18 @@ public class SafeDBWrapper extends SafeDBBroker { } } + public String decryptString(String userId, String table, String column, String data) throws SafeDBWrapperSdkException { + if (isRealSafeDB) { + try { + return safedb.decryptString(userId, table, column, data); + } catch (Exception e) { + throw new SafeDBWrapperException("[SafeDBWrapper] Decrypt error: " + e.getMessage(), e); + } + } else { + return super.decryptString(userId, table, column, data); + } + } + public String decryptNotRnno(String data) throws SafeDBWrapperSdkException { return new String(this.decrypt("SAFEDB", "SAFEDB.POLICY", "NOT_RNNO", data)); }