Bit Shift & Rotate
바이트 배열을 지정한 비트 수만큼 이동하거나 회전한다 (SHL, SHR, ROL, ROR)
개요
바이트 배열 전체를 하나의 연속된 빅엔디안 비트열로 보고 지정한 비트 수만큼 왼쪽 또는 오른쪽으로 논리 시프트(SHL, SHR)하거나 순환 회전(ROL, ROR)한다.
사용 시점
- CMAC 서브키 파생($L \ll 1$), ARX(Add-Rotate-Xor) 구조 실험, 또는 바이트 경계를 넘어가는 비트 필드 정렬을 수행할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
연산operation |
select기본값: SHL |
항상 노출 | 수행할 시프트 또는 회전 방향(SHL, SHR, ROL, ROR)이다.
|
비트 수bits |
number기본값: 1 |
항상 노출 | 이동할 비트 수(0 이상의 정수)이다. 외부 Bits 입력 포트가 연결되면 포트 값이 우선한다. |
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Value |
data |
Bytes |
필수 | 항상 노출 |
출력 포트
포트 성격: 고정 출력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Result |
result |
Bytes |
항상 노출 |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
BYTES_INVALID_ARGUMENT |
인자 값이 올바르지 않는다 | 이동할 비트 수(bits)가 음수이거나 정수가 아닐 때 발생한다. |
활용 예시
16바이트 블록을 왼쪽으로 1비트 시프트하기
블록 전체를 1비트 왼쪽으로 밀어 최상위 비트를 버리고 최하위 비트를 0으로 채운다.
- Bit Shift & Rotate에서 연산을
SHL, 비트 수를1로 설정하고Bytes를 연결한다.