Files
2026-06-24 16:28:42 +02:00

30 lines
1.0 KiB
TypeScript
Executable File

import { addRoundKey, expandKeyFake, preprocessKey, preprocessPlaintextHex, shiftRows, subBytes } from './utils'
const plaintext = '0f1e2d3c4b5a69788796a5b4c3d2e1f0'
const key = '00000000000000000000000000000000'
const plaintextBlock = preprocessPlaintextHex(plaintext)[0]
const keyBlock = preprocessKey(key)
const roundKeys = expandKeyFake(keyBlock)
let state = plaintextBlock
state = addRoundKey(state, roundKeys[0])
state = subBytes(state)
state = shiftRows(state)
console.log(`Plaintext: ${plaintext}`)
console.log(`Key: ${key}`)
console.log('State after applying the first two phases (SubBytes and ShiftRows) of the first round inside AES algorithm:')
console.table(state)
console.log('Equivalent state in hexadecimal:')
for (let rowIndex = 0; rowIndex < state.length; rowIndex++) {
const row = state[rowIndex]
for (let cellIndex = 0; cellIndex < row.length; cellIndex++) {
const cell = row[cellIndex]
state[rowIndex][cellIndex] = cell.toString(16).padStart(2, '0') as unknown as number
}
}
console.table(state)