def test(): sk = SecretKey(500, 2.44e-5, 1024, 2, 10, 3.73e-9, 8, 2, 2.44e-5) ck = CloudKey(sk) p = np.random.binomial(1, 0.5) x = tlweSymEncrypt((p * 2 + -1) * (2**-3), sk.params.alpha, sk.key.trlwe) y = IdentityKeySwitch(x, ck) np.set_printoptions(threshold=2000) if p != tlweSymDecrypt(y, sk.key.tlwe): print(p) print(tlweSymDecrypt(y, sk.key.tlwe)) print(i) exit()
def test(): sk = SecretKey(500, 2.44e-5, 1024, 2, 10, 3.73e-9, 8, 2, 2.44e-5) ck = CloudKey(sk) pa = np.random.binomial(1, 0.5) pb = np.random.binomial(1, 0.5) ca = tlweSymEncrypt((pa * 2 + -1) * (2**-3), sk.params.alpha, sk.key.tlwe) cb = tlweSymEncrypt((pb * 2 + -1) * (2**-3), sk.params.alpha, sk.key.tlwe) res = HomNAND(ca, cb, ck) y = tlweSymDecrypt(res, sk.key.tlwe) np.set_printoptions(threshold=2000) if (pa & pb) ^ 1 != y: print("FAILED") print( tlweSymDecrypt( np.uint32(np.append(np.zeros(ck.params.n), 2**29)) - ca - cb, sk.key.tlwe)) print(y) exit()
from pyFHE.trlwe import trlweSymEncrypt,trlweSymDecrypt,SampleExtractIndex from pyFHE.tlwe import tlweSymEncrypt,tlweSymDecrypt from pyFHE.key import SecretKey, CloudKey from pyFHE.gatebootstrapping import BlindRotateFFT from pyFHE.utils import dtot32 import numpy as np sk = SecretKey(500,2**(-7),1024,2,10,3.73e-9,8,2,2.43e-5) ck = CloudKey(sk) r = trlweSymEncrypt(np.full(sk.params.N,2**-3),0,sk.key.trlwe,sk.params.twist) t = tlweSymEncrypt(-2**-3,sk.params.alpha,sk.key.tlwe) bara = np.uint32(np.round(np.double(t) * (2**-32 * 2 * sk.params.N))) index = (((np.dot(bara[:-1],sk.key.tlwe)-bara[-1])%(2*sk.params.N))+2*sk.params.N)%(sk.params.N) np.set_printoptions(threshold=2000) Y = BlindRotateFFT(ck.bkfft,t,r,sk.params) print(index) print(trlweSymDecrypt(Y,sk.key.trlwe,sk.params.twist)) print(tlweSymDecrypt(SampleExtractIndex(Y,0),sk.key.trlwe))