30 lines
1.0 KiB
TypeScript
Executable File
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)
|