발생한 문제
- Cipher.doFinal(Byte)로 생성되는 값이 비정상적인 값이 생성되어 문제 발생
발생 원인
- Java에서는 대칭키 알고리즘을 사용하여 데이터의 암, 복호화를 수행할 때 javax.crypto.Cipher 클래스를 사용
- 해당 클래스의 경우 인스턴스를 가져올때 Cipher.getInstance()를 호출하는데 호출시 사용할 알고리즘, 운용모드, 패딩방식을 인자로 넘겨주어야 함
- 여기서 문제가 발생한 부분이 인자로 넘겨준 부분인데 기존 설정은 Cipher.getInstance("RSA") 로 설정되어 있었는데 이경우 Provider가 제공하는 기본설정을 따라가게 됨
- 서버의 환경이 Provider가 제공하는 기본 설정 적용시에 문제가 발생한 케이스로 운용모드, 패딩방법 2가지를 전부 적용하여 동작시 정상동작 확인
* 참고 사이트 : https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html
해결방법
1. Cipher 인스턴스 가져올때, 알고리즘, 운용모드, 패딩방법을 지정하여 적용
2. 적용 서버에 적합한 패딩방식을 적용하지 않을 경우 환경 변화시에 문제가 발생하는 경우가 있다고 함