STUDIO HAZE · image
Topaz source
Open by house policy. Topaz is our own language.
Topaz 5.9 · 42 files
topaz/src/ecc.tpz
Topaz · 1059 B · Original file
1
// Reed-Solomon protection and verification.3
import util { 비트배타합 }4
import wire { 갈루아표 }6
// 체에서 곱셈은 로그의 덧셈이다. 0은 로그가 없으므로 먼저 걸러낸다.7
export function 갈루아곱(왼쪽: int, 오른쪽: int, 표: 갈루아표) -> int {8
if 왼쪽 == 0 || 오른쪽 == 0 { return 0 }9
표.지수[표.로그[왼쪽] + 표.로그[오른쪽]]10
}12
export function 다항식곱(왼쪽: Array<int>, 오른쪽: Array<int>, 표: 갈루아표) -> Array<int> {13
let mut 결과: Array<int> = []14
let mut 색인 = 015
while 색인 < 왼쪽.length + 오른쪽.length - 1 { 결과.push(0); 색인 = 색인 + 1 }16
let mut 왼색인 = 017
while 왼색인 < 왼쪽.length {18
let mut 오른색인 = 019
while 오른색인 < 오른쪽.length {20
let 결과색인 = 왼색인 + 오른색인21
결과[결과색인] = 비트배타합(결과[결과색인], 갈루아곱(왼쪽[왼색인], 오른쪽[오른색인], 표), 8)22
오른색인 = 오른색인 + 123
}24
왼색인 = 왼색인 + 125
}26
결과27
}SHA256 d18077e91ff5e01290a791961dce759d80f7666b04fc42f2639869759b324d9a