#include <Arduino.h>
#define Nb 4 // Jumlah kolom
void shiftRows(byte state[4][Nb]) {
for (int row = 1; row < 4; ++row) {
int shift = row;
for (int col = 0; col < Nb; ++col) {
int new_col = (col + shift) % Nb;
byte temp = state[row][col];
state[row][col] = state[row][new_col];
state[row][new_col] = temp;
}
}
}
void printState(byte state[4][Nb]) {
for (int row = 0; row < 4; ++row) {
for (int col = 0; col < Nb; ++col) {
Serial.print(state[row][col], HEX);
Serial.print(' ');
}
Serial.println();
}
}
void setup() {
Serial.begin(9600);
}
void loop() {
byte state[4][Nb];
// Membaca 16 karakter dari Serial Monitor
Serial.println("Masukkan 16 karakter:");
while (Serial.available() < 16) {
delay(100);
}
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < Nb; ++j) {
state[i][j] = Serial.read();
}
}
Serial.println("State sebelum ShiftRows:");
printState(state);
shiftRows(state);
Serial.println("\nState setelah ShiftRows:");
printState(state);
// Membersihkan sisa karakter di Serial Monitor
while (Serial.available()) {
Serial.read();
}
delay(2000); // Menunggu 2 detik sebelum mengulang
}