카테고리 없음
AES256으로 암호화하고 복호화 하기
teamnova
2023. 6. 23. 12:00
728x90
안녕하세요. 오늘은 AES256으로 비밀번호를 암호화를 해보고 복호화도 해보겠습니다.
먼저 AES256클래스를 생성하겠습니다. 각 메서드는 암호화 메서드와 복호화 메서드가 있습니다.
public class AES256 {
private final static String ALGORITHM = "AES";
private final static int KEY_SIZE = 256;
private SecretKeySpec secretKeySpec;
public AES256(String key) {
generateKey(key);
}
private void generateKey(String key) {
try {
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
keyGenerator.init(KEY_SIZE);
SecretKey secretKey = keyGenerator.generateKey();
byte[] encodedKey = secretKey.getEncoded();
secretKeySpec = new SecretKeySpec(encodedKey, ALGORITHM);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public String encrypt(String plaintext) {
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal(plaintext.getBytes());
return Base64.encodeToString(encrypted, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public String decrypt(String ciphertext) {
try {
byte[] ciphertextBytes = Base64.decode(ciphertext, Base64.DEFAULT);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decrypted = cipher.doFinal(ciphertextBytes);
return new String(decrypted);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
클래스를 만드셨다면 이제 메인 클래스에서 암호화를 해보고 복호화도 해서 출력을 하겠습니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AES256 aes256 = new AES256("my_secret_key");
String password = aes256.encrypt("teamnova");
Log.d("TAG", "암호화: " + password);
Log.d("TAG", "복호화 : " + aes256.decrypt(password));
}
}
teamnova를 암호화 하고 암호화된 문자열을 복호화해서 다시 teamnova로 보이게 합니다.
다음은 결과입니다.
해당 기능을 비밀번호 저장할때 사용하셔도 되고 암호화가 필요한 내용이라면 암호화를 할 수 있습니다.