NTRU Ψευδο-κώδικα για τον υπολογισμό πολυωνύμων αντίστροφες

ψήφοι
2

Αναρωτιόμουν αν κάποιος μπορούσε να μου πει πώς να εφαρμόσουν γραμμή 45 του επόμενου ψευδο-κώδικα.

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.}

Η συνάρτηση StarMultiplyεπιστρέφει ένα πολυώνυμο (array) αποθηκεύεται στη μεταβλητή temp. Βασικά θερμοκρασία είναι ένα πολυώνυμο (Είμαι αυτό που αντιπροσωπεύει ως μια σειρά) και v είναι ένας ακέραιος (ας πούμε 4 ή 8), οπότε τι ακριβώς temp = 2-temp mod vισοδυναμεί με το κανονικό γλώσσα; Πώς θα πρέπει να εφαρμόσει αυτή τη γραμμή στον κώδικά μου. Μπορεί κάποιος να μου δώσει ένα παράδειγμα.

Η παραπάνω αλγόριθμος είναι για τον υπολογισμό πολυώνυμα αντίστροφη NTRUEncrypt δημιουργία του κλειδιού. Ο ψευδο-κώδικας μπορεί να βρεθεί στη σελίδα 28 του παρόντος εγγράφου . Ευχαριστώ εκ των προτέρων.

Δημοσιεύθηκε 17/03/2010 στις 10:23
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Για κάθε ένδειξη που temp, temp [i], που temp [i] = 2-temp [i] mod v.

Αυτό θα πρέπει να αντιστοιχεί στο «Inverse στο Z_p ^ n» τμήμα της απάντησής μου να αλγόριθμο για τον υπολογισμό του αντιστρόφου ενός πολυωνύμου .

Καθώς κοιτάζω το τώρα, νομίζω ότι η απάντησή μου δεν μπορεί να κάνει ό, τι λέει - που λέει «Αντίστροφη σε Z_p ^ ν», αλλά μοιάζει περισσότερο με μια αντίστροφη σε Z_2 ^ n. Γι 'αυτό θα πρέπει να εργαστεί για p = 2, αλλά ίσως όχι για τίποτα άλλο.

Απαντήθηκε 17/03/2010 στις 22:05
πηγή χρήστη

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