[java] 자바 서버에서 암호화 처리하기
보안은 모든 온라인 시스템에서 매우 중요한 측면입니다. 사용자 데이터를 보호하기 위해 서버에서 데이터를 암호화하는 것이 필수적입니다. 이 글에서는 자바를 사용하여 서버에서 데이터를 안전하게 암호화하는 방법을 알아보겠습니다.
Key 및 KeyStore 생성
암호화를 위해 먼저 Key를 생성해야 합니다. 다음은 자바에서 KeyPair 및 KeyStore를 생성하는 간단한 예제 코드입니다.
import java.security.*;
import java.io.FileOutputStream;
public class KeyPairGeneratorDemo {
public static void main(String[] args) throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
// Save the keys to a KeyStore
KeyStore keyStore = KeyStore.getInstance("JKS");
char[] password = "password".toCharArray();
keyStore.load(null, password);
KeyStore.ProtectionParameter protParam = new KeyStore.PasswordProtection(password);
KeyStore.PrivateKeyEntry privateKeyEntry = new KeyStore.PrivateKeyEntry(keyPair.getPrivate(), new Certificate[]{});
keyStore.setEntry("myalias", privateKeyEntry, protParam);
// Store away the keystore.
FileOutputStream fos = new FileOutputStream("mykeystore.jks");
keyStore.store(fos, password);
fos.close();
}
}
위의 예제 코드는 RSA 알고리즘을 사용하여 2048비트의 KeyPair를 생성하고, 이를 JKS 포맷의 KeyStore에 저장하는 방법을 보여줍니다.
데이터 암호화 및 복호화
이제 KeyStore에 저장된 Key를 사용하여 데이터를 암호화하고 복호화하는 방법을 알아보겠습니다.
import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyStore;
import java.io.FileInputStream;
public class EncryptionDemo {
public static void main(String[] args) throws Exception {
KeyStore keyStore = KeyStore.getInstance("JKS");
FileInputStream fis = new FileInputStream("mykeystore.jks");
keyStore.load(fis, "password".toCharArray());
KeyPair keyPair = new KeyPair(keyStore.getCertificate("myalias").getPublicKey(), (java.security.PrivateKey) keyStore.getKey("myalias", "password".toCharArray()));
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
byte[] encryptedData = cipher.doFinal("Hello, World!".getBytes());
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println("Decrypted data: " + new String(decryptedData));
}
}
위의 예제 코드는 저장된 Key를 사용하여 “Hello, World!” 라는 문자열을 암호화하고, 다시 복호화하여 출력하는 방법을 보여줍니다.
이제 서버 애플리케이션에서 이러한 암호화 및 복호화 기술을 활용하여 사용자 데이터를 안전하게 보호할 수 있습니다.