charm-crypto 5.0 ubuntu 安装
需要用到的资源
提取码:olqc
官方文档:https://jhuisi.github.io/charm/install_source.html
-
检查工具链版本
gcc -v make -v perl -v
gcc -> 9.4.0 make -> 4.2.1 perl -> 5.30.0
如果没有则安装
sudo apt-get install gcc sudo apt-get install make sudo apt-get install perl
-
安装依赖库
sudo apt-get update sudo apt-get install m4 flex bison
-
安装python依赖
sudo apt-get install python3-setuptools python3-dev libssl-dev sudo apt-get install python3-pip pip3 install pyparsing==2.4.6 pip3 install hypothesis
-
编译安装OpenSSL
openssl version
使用默认1.1.1版本,安装成功。
-
安装GMP
GMP是一个提供高精度算术的开源软件库,支持对有符号整数、有理数和浮点数进行运算。
下载地址,选择5.1.3。解压:
tar -xvf gmp-5.1.3.tar.bz2
移动到usr/local/src/下
sudo mv gmp-5.1.3 /usr/local/src/ cd /usr/local/src/gmp-5.1.3
写入配置
sudo ./configure
安装
sudo make sudo make install
这里有个坑,重启后apt不可用,网卡加载失败等一系列问题。
查询后得知
于是有如下解决方法:已测试,不好用。
1. 在/usr/local/lib下创建一个libgmp目录 sudo mkdir /usr/local/lib/libgmp 2. 移动所有的libgmp文件 sudo mv /usr/local/lib/libgmp* /usr/local/lib/libgmp/ -r 3. 创建库索引 sudo touch /etc/ld.so.conf.d/libgmp.conf 编辑libgmp.conf sudo vi /etc/ld.so.conf.d/libgmp.conf /usr/local/lib/libgmp 4. sudo ldconfig
不过还是没用,建议完成安装后手动删除这些库,否则重启后还是会出现问题。该库只在安装PBC时会用到,所以可以删除。
-
编译安装PBC
下载地址,选择0.5.14
解压,移动
tar -xvf pbc-0.5.14.tar.gz mv pbc-0.5.14 /usr/local/src/
进入目录,配置
mv pbc-0.5.14 /usr/local/src/ sudo ./configure
编译
sudo make
安装
sudo make install
在/etc/ld.so.conf.d/目录下新建一个libpbc.conf,
sudo touch /etc/ld.so.conf.d/libpbc.conf 编辑libpbc.conf sudo vi /etc/ld.so.conf.d/libpbc.conf /usr/local/lib
sudo ldconfig
-
安装charm
下载
git clone https://github.com/JHUISI/charm.git
或者下载压缩包,解压
unzip charm-dev.zip
移动
mv charm-dev /usr/local/src/
进入目录并配置
cd /usr/local/src/charm-dev sudo ./configure.sh
编译并安装
sudo make sudo make install
安装完成
-
使用pycharm导入。
-
再次在命令行中测试:
from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair group2 = PairingGroup('SS512') g = group2.random(G1) g = group2.random(G2)
-
-
在pycharm中配置
关于问题
ERROR: module load failed!
initialization of integer failed without raising an exceptionfrom charm.toolbox.integergroup import IntegerGroup, IntegerGroupQ print(IntegerGroup) print(IntegerGroupQ)
降级python版本至3.7即可。