[java] 자바 네트워크 프로그래밍에서의 데이터 암호화와 복호화

네트워크 프로그래밍에서는 데이터 보안이 매우 중요합니다. 데이터를 전송할 때 암호화를 통해 데이터를 안전하게 전송하고, 수신 측에서는 복호화하여 정상적인 데이터를 얻을 수 있습니다.

데이터 암호화

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

// 대칭키 생성
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();

// 암호화
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal(plainText.getBytes());

위의 예제 코드에서, AES 알고리즘을 사용하여 데이터를 암호화했습니다. 이 코드는 데이터를 암호화할 대칭키를 생성하고, 해당 키를 사용하여 암호화를 수행합니다.

데이터 복호화

// 복호화
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
String decryptedText = new String(decryptedData);

위의 코드는 암호화된 데이터를 수신하여 복호화하는 방법을 보여줍니다. 먼저, 복호화에 사용할 대칭키를 이용하여 복호화를 수행하고, 원래의 데이터를 얻습니다.

이러한 암호화와 복호화를 통해, 네트워크를 통해 안전하게 데이터를 전송할 수 있습니다.

참고 자료

위의 예제 코드와 설명은 Oracle Java Cryptography Architecture 문서를 참고하여 작성되었습니다.