CentOS 7.9编译安装NTL,运行HQC-Round4

编译安装ntl

在/ntl-11.5.1/src目录下执行

1
2
3
$ ./configure SHARED=on CXXFLAGS=-O3
$ make
$ make install

修改hqc的Makefile文件

然后到HQC解压得到的 /Reference_Implementation/hqc-256 目录下 修改Makefile文件(上一行是原内容,下一行是修改后的)

1
2
3
4
5
6
 7  #CPP_FLAGS:=-O3 -Wall -Wextra -Wpedantic -Wvla -Wredundant-decls
8 CPP_FLAGS:=-O3 -Wall -Wextra -Wpedantic -Wvla -Wredundant-decls -std=c++11


14 #INCLUDE:=-I $(ROOT)/src -lntl -lgf2x -lgmp -pthread
15 INCLUDE:=-I $(ROOT)/src -lntl -L/usr/local/lib-lgf2x -lgmp -pthread

make

修改完成后执行

1
2
$ make
$ make hqc-256-kat

然后到 /Reference_Implementation/hqc-256/bin 目录下 执行 ./hqc-256-kat

如果提示 ./hqc-256-kat: error while loading shared libraries: libntl.so.44: cannot open shared object file: No such file or directory
就需要执行export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH 或者 setenv LD_LIBRARY_PATH /usr/local/lib/:$LD_LIBRARY_PATH
然后然后重新执行 ./hqc-256-kat

1
2
[qianj@wds049 bin]$ ./hqc-256-kat 
[qianj@wds049 bin]$

无返回正常。

如果上面执行的是makemake hqc-256,然后进入到bin目录下执行 ./hqc-256 就是有返回的 ,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@wds069 bin]# pwd
/root/test/Reference_Implementation/hqc-256/bin
[root@wds069 bin]#
[root@wds069 bin]# ./hqc-256

*********************
**** HQC-256-256 ****
*********************

N: 57637 N1: 90 N2: 640 OMEGA: 131 OMEGA_R: 149 Failure rate: 2^-256 Sec: 256 bits


secret1: 3fe3ebee3555a7f2ac65dfd984b9d296b9d9fc1854e6da2fd757b13dafab12f8b17d031b6fbcef12fdb44aa7db597ab174badc5d81d3b783f4ce6d0f8ce5f62
secret2: 3fe3ebee3555a7f2ac65dfd984b9d296b9d9fc1854e6da2fd757b13dafab12f8b17d031b6fbcef12fdb44aa7db597ab174badc5d81d3b783f4ce6d0f8ce5f62

[root@wds069 bin]#

其他可能涉及的问题

  1. yum install gf2x-devel
  2. libstdc++库文件相关
    将libstdc++.so.6.0.26复制到/lib64/目录下,然后将原来的软链接重命名后,创建新的软链接指向复制过来的文件,并注意修改权限(755)。即 libstdc++.so.6 指向 libstdc++.so.6.0.26。
    可以如下进行测试
    1
    2
    strings  /lib64/libstdc++.so.6 | grep CXXABI
    strings /lib64/libstdc++.so.6 | grep GLIBCXX

课程中心

在线课程