codeimage

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.
3import util { 비트배타합 }
4import wire { 갈루아표 }
6// 체에서 곱셈은 로그의 덧셈이다. 0은 로그가 없으므로 먼저 걸러낸다.
7export function 갈루아곱(왼쪽: int, 오른쪽: int, 표: 갈루아표) -> int {
8 if 왼쪽 == 0 || 오른쪽 == 0 { return 0 }
9 표.지수[표.로그[왼쪽] + 표.로그[오른쪽]]
12export function 다항식곱(왼쪽: Array<int>, 오른쪽: Array<int>, 표: 갈루아표) -> Array<int> {
13 let mut 결과: Array<int> = []
14 let mut 색인 = 0
15 while 색인 < 왼쪽.length + 오른쪽.length - 1 { 결과.push(0); 색인 = 색인 + 1 }
16 let mut 왼색인 = 0
17 while 왼색인 < 왼쪽.length {
18 let mut 오른색인 = 0
19 while 오른색인 < 오른쪽.length {
20 let 결과색인 = 왼색인 + 오른색인
21 결과[결과색인] = 비트배타합(결과[결과색인], 갈루아곱(왼쪽[왼색인], 오른쪽[오른색인], 표), 8)
22 오른색인 = 오른색인 + 1
23 }
24 왼색인 = 왼색인 + 1
25 }
26 결과

SHA256 d18077e91ff5e01290a791961dce759d80f7666b04fc42f2639869759b324d9a