TFHE的电路自举代码运行

源码

电路自举: TLWE——> TRGSW
原理简单讲是:

  1. TRGSW密文的每一行其实是TRLWE密文, 分析每个TRLWE加密的消息(利用b-as):
    在这里插入图片描述

  2. 分析出每个TRLWE内部的消息后,利用TLWE分别构造相应消息的TRLWE密文,最后“组装”所有的TRLWE,得到TRGSW密文。其中需要密钥切换、门自举、隐私密钥切换等基本模块。

cd circuit-bootstrapping
cd src
make

spqlios/spqlios-fft-impl.cpp:350:8: error: passing argument 1 to restrict-qualified parameter aliases with argument 2 [-Werror=restrict]
   sub4(tmp0,tmp0,tmp3); // re2
        ^~~~ ~~~~
spqlios/spqlios-fft-impl.cpp:351:8: error: passing argument 1 to restrict-qualified parameter aliases with argument 2 [-Werror=restrict]
   add4(tmp1,tmp1,tmp2); // im2
        ^~~~ ~~~~
spqlios/spqlios-fft-impl.cpp:354:8: error: passing argument 1 to restrict-qualified parameter aliases with argument 3 [-Werror=restrict]
   sub4(tmp0,re0,tmp0); // re - re
        ^~~~     ~~~~
spqlios/spqlios-fft-impl.cpp:355:8: error: passing argument 1 to restrict-qualified parameter aliases with argument 3 [-Werror=restrict]
   sub4(tmp1,im0,tmp1); // im - im
        ^~~~     ~~~~
cc1plus: all warnings being treated as errors
make: *** [Makefile:23:spqlios/spqlios-fft-impl.o] 错误 

如果出现上述问题,我把-Werror给去掉了

-Werror,它要求GCC将所有的警告当成错误进行处理

g++ -c -std=gnu++11 -g3 -Ofast -Wall  -DUSE_FFT -DNDEBUG  -o spqlios/fft_processor_spqlios.o spqlios/fft_processor_spqlios.cpp 
gcc -c -g3 -Ofast -Wall -DUSE_FFT -DNDEBUG -o spqlios/lagrangehalfc_impl_fma.o spqlios/lagrangehalfc_impl_fma.s 
g++ -c -std=gnu++11 -g3 -Ofast -Wall  -DUSE_FFT -DNDEBUG  -o poc_CircuitBootstrapping.o poc_CircuitBootstrapping.cpp 
g++ -c -std=gnu++11 -g3 -Ofast -Wall -DUSE_FFT -DNDEBUG -o poc_karatsuba_optim.o poc_karatsuba.cpp 
g++ -std=gnu++11 -g3 -Ofast -Wall  -DUSE_FFT -DNDEBUG  spqlios/spqlios-fft-fma.o spqlios/spqlios-ifft-fma.o spqlios/spqlios-fft-impl.o spqlios/fft_processor_spqlios.o spqlios/lagrangehalfc_impl_fma.o poc_CircuitBootstrapping.o poc_karatsuba_optim.o -o poc_CircuitBootstrapping
/usr/bin/ld: spqlios/spqlios-fft-fma.o: relocation R_X86_64_32S against `.text' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: spqlios/spqlios-ifft-fma.o: relocation R_X86_64_32S against `.text' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
make: *** [Makefile:29:poc_CircuitBootstrapping] 错误 1

如果又出现这种错误,relocation R_X86_64_32S against .text' can not be used when making a PIE object; recompile with -fPIE, 我的解决办法是:Makefile文件中第一行 CFLAGS 后面添加了 -no-pie

这样就可以运行成功了:

generating the keys
generating preKS...
generating bk...
generating bkFFT...
generating privKS...
Input message: 1610612736, phase: 1594822302
starting circuit bootstrapping 
finished circuit bootstrapping 
total time (microsecs for 10 TRIALS)... 2321459
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值