Private/Field/Invoke-SecretSharingFieldMultiplication.ps1
|
function Invoke-SecretSharingFieldMultiplication { <# .SYNOPSIS Multiplies two GF(256) field elements. .DESCRIPTION Uses the exponent/logarithm tables from Get-SecretSharingFieldTable: a * b = Exp[(Log[a] + Log[b]) mod 255] for nonzero operands, 0 otherwise. #> [CmdletBinding()] [OutputType([byte])] param( [Parameter(Mandatory)] [byte]$A, [Parameter(Mandatory)] [byte]$B ) if ($A -eq 0 -or $B -eq 0) { return [byte]0 } $table = Get-SecretSharingFieldTable $exponent = ($table.Log[$A] + $table.Log[$B]) % 255 return [byte]$table.Exp[$exponent] } |