본문 바로가기
Java/암호화

암호화 패딩 종류

by Mecodata 2024. 3. 18.

패딩(Padding)

  • 암호화에서 사용되는 기술 중 하나로 평문을 암호화하기 전에 일정한 규칙에 따라 데이터의 길이를 조정하는 과정
  • 주로 블록 암호화에서 사용되며 평문의 길이가 블록 크기의 배수가 아니어서 블록 크기의 배수가 되도록 평문의 길이를 늘려야 할 때 사용
  • 패딩을 통해 암호의 안전성이 더욱 강화됨
  • 대칭 암호화에서는 PKCS5Padding, 비대칭 암호화에서는 OAEPPadding이 보안성이 가장 높아 주로 사용됨

PKCS5Padding, PKCS7Padding

  • 패딩할 크기의 바이트를 모든 패딩의 바이트로 설정하여 패딩을 진행
  • 가장 널리 사용되는 패딩 방식
  • PKCS5Padding과 PKCS7Padding은 기본적으로 동일한 것으로 간주됨

PKCS1Padding

  • RSA 알고리즘과 함께 사용되며 데이터의 첫 번째 바이트가 0x00이고 두 번째 바이트가 0x02인 패딩을 적용함
  • 이후에는 랜덤하게 생성된 값으로 패딩을 진행하며 패딩의 길이는 RSA의 블록 크기보다 작아야 함

SSL3Padding

  • 패딩하는 데이터를 마지막 바이트 이전에 모두 0으로 패딩을 진행
  • 마지막 바이트는 패딩할 바이트의 개수를 의미
  • ISO10126Padding과 비슷하나 고정된 값으로 패딩이 진행되기 때문에 보안성이 더 취약함

ISO10126Padding

  • 패딩하는 데이터를 랜덤하게 생성한 값으로 패딩을 진행
  • 마지막 바이트는 패딩한 바이트의 길이를 의미
  • 안전한 해싱을 제공하지 않아 보안 수준이 낮은 편

OAEPPadding

  • RSA 알고리즘과 함께 사용되며 ISO10126Padding과 같이 패딩하는 데이터를 랜덤하게 생성한 값으로 패딩을 진행
  • ISO10126Padding 보다 보안성이 높은 해싱으로 패딩을 진행

'Java > 암호화' 카테고리의 다른 글

블록 암호화 기법 종류  (0) 2024.03.18
암호화 알고리즘 종류  (0) 2024.03.18
javax.crypto.Cipher  (0) 2024.03.18
Jasypt (application.properties 암호화)  (0) 2024.02.28

댓글