NTRU Pseudo-code voor het berekenen van polynomiale Inverses

stemmen
2

Ik vroeg me af of iemand mij kon vertellen hoe de uitvoering van lijn 45 van de volgende pseudo-code.

Require: the polynomial to invert a(x), N, and q.
1: k = 0
2: b = 1
3: c = 0
4: f = a
5: g = 0 {Steps 5-7 set g(x) = x^N - 1.}
6: g[0] = -1
7: g[N] = 1
8: loop
9:  while f[0] = 0 do
10:         for i = 1 to N do
11:             f[i - 1] = f[i] {f(x) = f(x)/x}
12:             c[N + 1 - i] = c[N - i] {c(x) = c(x) * x}
13:         end for
14:         f[N] = 0
15:         c[0] = 0
16:         k = k + 1
17:     end while
18:     if deg(f) = 0 then
19:         goto Step 32
20:     end if
21:     if deg(f) < deg(g) then
22:         temp = f {Exchange f and g}
23:         f = g
24:         g = temp
25:         temp = b {Exchange b and c}
26:         b = c
27:         c = temp
28:     end if
29:     f = f XOR g
30:     b = b XOR c
31: end loop
32: j = 0
33: k = k mod N
34: for i = N - 1 downto 0 do
35:     j = i - k
36:     if j < 0 then
37:         j = j + N
38:     end if
39:     Fq[j] = b[i]
40: end for
41: v = 2
42: while v < q do
43:     v = v * 2
44:     StarMultiply(a; Fq; temp;N; v)
45:     temp = 2 - temp mod v
46:     StarMultiply(Fq; temp; Fq;N; v)
47: end while
48: for i = N - 1 downto 0 do
49:     if Fq[i] < 0 then
50:         Fq[i] = Fq[i] + q
51:     end if
52: end for
53: {Inverse Poly Fq returns the inverse polynomial, Fq, through the argument list.}

De functie StarMultiplyretourneert een polynoom (array) opgeslagen in de variabele temp. Temp principe wordt een polynoom (ik it vertegenwoordigen als een matrix) en v een geheel getal is (bijvoorbeeld 4 of 8), dus wat doet temp = 2-temp mod vgelijk in normale taal? Hoe moet ik implementeren die lijn in mijn code. Kan iemand me een voorbeeld geven.

Het bovenstaande algoritme voor het berekenen Inverse polynomen voor NTRUEncrypt sleutelgeneratie. De pseudo-code is te vinden op pagina 28 van dit document . Bij voorbaat dank.

De vraag is gesteld op 17/03/2010 om 10:23
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Voor iedere omschrijving in temp, temp [i], ingesteld temp [i] = 2-temp [i] mod v.

Dit moet overeenstemmen met de "Inverse in Z_p ^ n" sectie van mijn reactie op algoritme voor het berekenen van de inverse van een polynoom .

Als ik kijk naar het nu, ik denk dat mijn antwoord kan niet doen wat het zegt - het zegt "Inverse in Z_p ^ n", maar het lijkt meer op een inverse in Z_2 ^ n. Dus het zou moeten werken voor p = 2, maar misschien niet voor iets anders.

antwoordde op 17/03/2010 om 22:05
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more