Block Padding
암호학적 블록 패딩을 적용한다 (PKCS#7, ANSI X9.23, ISO/IEC 9797-1 방법 1/2/3, NIST SP 800-38B, 없음)
개요
임의 길이의 입력 바이트 배열(Uint8Array) 뒤에 선택한 표준 블록 패딩 바이트들을 추가하여 전체 길이가 목표 블록 크기(8바이트 또는 16바이트)의 정확한 배수가 되도록 맞춘다.
암호화 노드의 내장 패딩을 쓰는 대신, 패딩된 평문 블록 구조(PKCS7, ANSI_X923, ISO9797_M1, ISO9797_M2, ISO9797_M3, NIST_800_38B)를 눈으로 직접 확인하거나 Padding = None으로 설정된 블록 암호 노드에 수동으로 공급할 때 사용한다. 각 스킴의 바이트 레이아웃은 패딩 스킴을 참고한다.
사용 시점
- AES Encrypt, DES Encrypt 등을
Padding = None으로 두고 패딩 단계를 별도 노드로 분리해 검사할 때 사용한다. - ISO/IEC 9797-1 MAC 알고리즘용 입력 블록(Method 1, 2, 3)을 조립할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
패딩 표준paddingType |
select기본값: None |
항상 노출 | 이 노드의 패딩 표준 설정을 지정한다. 자세한 내용은 패딩 스킴을 참고한다.
|
블록 크기 (바이트)blockSize |
select기본값: 16 |
항상 노출 | 목표 블록 크기(바이트 단위: 16 = AES/SEED/ARIA/Camellia/SM4용 128비트 블록, 8 = DES/TDES용 64비트 블록)이다.
|
오류 단일화errorUnify |
boolean기본값: false |
항상 노출 | 활성화하면 내장 오류를 지정한 단일 오류 코드·메시지로 대체한다. |
단일화 오류 코드errorUnifyCode |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 코드이다. |
단일화 오류 메시지errorUnifyMessage |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 메시지이다. |
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Data |
data |
Bytes |
필수 | 항상 노출 | 패딩할 원본 입력 바이트 배열(Uint8Array)이다. |
출력 포트
포트 성격: 고정 출력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Padded Data |
result |
Bytes |
항상 노출 |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다. 오류 통합(errorUnify)을 활성화하면 아래의 모든 오류 코드가 사용자가 지정한 단일 오류 코드와 메시지로 대체된다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
PLAINTEXT_NOT_BLOCK_ALIGNED |
NoPad 모드에서는 평문 길이가 블록 크기의 배수여야 한다 | scheme = None일 때 입력 Data 길이가 선택한 blockSize의 양의 배수가 아니면 발생한다. |
활용 예시
5바이트 메시지에 16바이트 PKCS#7 패딩 적용하기
5바이트 입력 뒤에 11개의 0x0b 바이트가 추가되어 16바이트가 되는 것을 확인한다.
- Block Padding에서 패딩 방식을
PKCS7, 블록 크기를16으로 설정한다. - 5바이트 입력을
Data에 연결하면 뒤에0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b가 붙은 16바이트가 출력된다.