웹 개발

비밀키(암호화 키)를 문자열로 변환 및 반대로 변환

노루아부지 2021. 12. 7. 23:40

비밀키를 생성했으면 DB나 파일 등에 저장해야 합니다.

다음은 key를 String으로 변환하여 저장하는 방법과 반대로, String으로 key로 변환하는 방법입니다.

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class Test {
  public static void main(String[] args) throws NoSuchAlgorithmException {
    // create new key
    SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
    // get base64 encoded version of the key
    String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());

    System.out.println(encodedKey);

    // decode the base64 encoded string
    byte[] decodedKey = Base64.getDecoder().decode(encodedKey);
    // rebuild key using SecretKeySpec
    SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES");
  }
}

 

여기서 주의 사항이 있습니다. 바로 java.util.Base64는 java 1.8에 추가되었다는 것인데요

 

이럴 때는 Apache Commons Codec을 사용하면 됩니다.

 

 

 

 

 

참고사이트

https://stackoverflow.com/questions/5355466/converting-secret-key-into-a-string-and-vice-versa

728x90
loading