Cipher

HyeBin, Park·2022년 9월 15일
0

Cipher

java 에서 암복호화에 사용하여는 클래스

암호화

  • 권한이 있는 사용자만 메세지를 이해하거나 접근할 수 있도록하는 것
  • 즉, 원문 메세지를 권한이 없는 사람들은 못 읽게한다.

Cipher 사용

Cipher cipher = Cipher.getInstance("AES/CBC/PKCSSPadding", Providername (선택) );
// 파라미터 문자열 각각의 값은 암호화 알고리즘, 운용방식, 패딩방식

암호화 알고리즘

  • 단방향 알고리즘 : 암호문을 평문으로 되돌리는 복호화가 불가능하다.
    => 해시 기법 (SHA-256, MD-5)
  • 비대칭키 알고리즘 : 암복호화에 사용하는 키가 서로 다르고, 두 개의 키중 하나의 키는 반드시 공개되어야해서 공개키 방식이라고도 부른다.
    => RSA
  • 대칭키 알고리즘 : 암복호화에 사용하는 키가 서로같다.
    => AES

운용 방식

  • 특정 비트 수의 집합을 일정 크기의 블록 단위로 구성하여 처리하는 암호 기법을 블록 암호화
  • 블록을 어떻게 암호화 할지 정해야하는데 이 블록들의 암호화 방식을 운용 방식이라 한다.

패딩

  • AES나 DES와 같은 브록 암호 알고리즘은 평문의 길이가 해당 암호의 블록크기의 배수로 정확하게 떨어져야한다.
  • 이 마지막 블록의 빈 공간을 채우는 것을 패딩이라한다.

SecretKey

SecretKey secretKey = new SecretKeySpec(keyBytes, "AES");
  • 암호화 작업들을 위한 키
  • keys는 인코딩된 키, 키의 인코딩 포맷, 암호화 알고리즘을 포함하는 불투명한 컨테이너

init

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKey secretKey = new SecretKeySpec(keyBytes, "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
  • Cipher 객체 초기화 시 키 또는 증명서 그리고 Cipher의 작동 모드를 나타내는 Opmode와 함께 init() 메서드를 호출할 수 있다.
  • cipher 작업 모드
    • ENCRYPT_MODE : cipher 객체를 암호화 모드로 초기화한다.
    • DECRYPT_MODE : cipher 객체를 복호화 모드로 초기화한다.
    • WRAP_MODE : cipher 객체를 key-wrapping 모드로 초기화한다.
    • UNWRAP_MODE : cipher 객체를 key-unwrapping 모드로 초기화한다.
  • InvalidKeyException

doFinal

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKey secretKey = new SecretKeySpec(keyBytes, "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);

return cipher.doFinl(message);
  • Cipher 객체를 초기화한 후에 암호화 또는 복호화 작업을 위해서 doFinal() 메서드를 호출한다.
  • 암호화 또는 복호화된 메세지를 포함한 Byte 배열을 반환한다.

Providers

Security.addProvider(new BouncyCastleProvider());
  • BouncyCastle 인증된 암호화 라이브러리를 보안 공급자로 연결하고 새로운 알고리즘을 원할하게 추가할 수 있다.
  • Provider 구현체는 보안 알고리즘 구현체 목록을 포함하고 있다.
  • 특정 알고리즘의 인스턴스가 필요해지면 프로바이더 저장소에서 해당 알고리즘의 적합한 구현체 클래스를 찾아 클래스 인스턴스를 생성한다.

Refer

https://devjjsjjj.tistory.com/entry/Cipher-%EC%9E%90%EB%B0%94%EC%9D%98-%EC%95%94%ED%98%B8%ED%99%94%EB%B3%B5%ED%98%B8%ED%99%94%EB%A5%BC-%EB%8B%B4%EB%8B%B9%ED%95%98%EB%8A%94-%ED%81%B4%EB%9E%98%EC%8A%A4-1

0개의 댓글