Ring-Lwe
RLWE 密鑰交換的 FFT 乘法
我試圖將兩個多項式商環相乘 $ R=Z[x]/\phi(x) $ 在使用快速傅里葉變換的鼠尾草中:
a=Rq.random_element()
R. = PolynomialRing(GF(40961)) # 整數 Y 的高斯場。
= R.quotient(X^(dimension) + 1) # Cyclotomic field
輸出=Y(a)*Y(a )
我在 github 上找到了以下程式碼來完成這項工作,但它適用於簡單的多項式,當我為商多項式執行此程式碼時,它給了我以下類型錯誤
Sage 本身有一個內部的負循環卷積,這是這裡所必需的。為避免類型錯誤,我們將多項式轉換為係數列表,並使用它們來代替:
from sage.rings.polynomial.convolution import _negaconvolution_fft n = 10 # degree 1024 Rq = GF(40961) R.<X> = PolynomialRing(Rq) S.<x> = R.quotient_ring(X^(2^n) + 1) u = S.random_element() v = S.random_element() w_1 = S(_negaconvolution_fft(list(u), list(v), n)) w_2 = u * v assert(w_1 == w_2)