---
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { galoisMultiplyBy2 } from './mixColumns'
|
||||
|
||||
const galoisMultiplyBy9 = (value: number): number => {
|
||||
return galoisMultiplyBy2(galoisMultiplyBy2(galoisMultiplyBy2(value))) ^ value
|
||||
}
|
||||
|
||||
const galoisMultiplyBy11 = (value: number): number => {
|
||||
return galoisMultiplyBy2(galoisMultiplyBy2(galoisMultiplyBy2(value)) ^ value) ^ value
|
||||
}
|
||||
|
||||
const galoisMultiplyBy13 = (value: number): number => {
|
||||
return galoisMultiplyBy2(galoisMultiplyBy2(galoisMultiplyBy2(value) ^ value)) ^ value
|
||||
}
|
||||
|
||||
const galoisMultiplyBy14 = (value: number): number => {
|
||||
return galoisMultiplyBy2(galoisMultiplyBy2(galoisMultiplyBy2(value) ^ value) ^ value)
|
||||
}
|
||||
|
||||
const clampToByte = (value: number): number => {
|
||||
return value & 0xFF
|
||||
}
|
||||
|
||||
export const invMixColumns = (state: number[][]): number[][] => {
|
||||
const result: number[][] = [
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 0]
|
||||
]
|
||||
|
||||
for (let col = 0; col < 4; col++) {
|
||||
result[0][col] = clampToByte(galoisMultiplyBy14(state[0][col]) ^ galoisMultiplyBy11(state[1][col]) ^ galoisMultiplyBy13(state[2][col]) ^ galoisMultiplyBy9(state[3][col]))
|
||||
result[1][col] = clampToByte(galoisMultiplyBy9(state[0][col]) ^ galoisMultiplyBy14(state[1][col]) ^ galoisMultiplyBy11(state[2][col]) ^ galoisMultiplyBy13(state[3][col]))
|
||||
result[2][col] = clampToByte(galoisMultiplyBy13(state[0][col]) ^ galoisMultiplyBy9(state[1][col]) ^ galoisMultiplyBy14(state[2][col]) ^ galoisMultiplyBy11(state[3][col]))
|
||||
result[3][col] = clampToByte(galoisMultiplyBy11(state[0][col]) ^ galoisMultiplyBy13(state[1][col]) ^ galoisMultiplyBy9(state[2][col]) ^ galoisMultiplyBy14(state[3][col]))
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user