PBC
是密码学中计算双线性对的C
库,对于双线性对运算具有很大的帮助,在python
中同样在有着双线性对运算的库,名为pypbc
,该库具有很多依赖项,安装前需要按照顺序依次安装,本文从一台新安装的ubuntu 16.04
虚拟机开始,接下来演示python3
中pypbc
的安装过程,按照步骤百分百成功安装。
pypbc
的使用请参照pypbc双线性对库的使用
环境:
主机:Ubuntu 16.04 LTS
安装:pypbc库
工具:python3
一、依赖项安装
1、安装工具
开始前先安装要用到的工具
1) pip3
(网速不好的话大概四分钟左右)
sudo apt-get install python3-pip
2) vim
sudo apt-get install vim
3) c++
编译器
sudo apt-get install -y gcc c++
4)git
工具
sudo apt-get install git
5)lzip
解压缩工具
下载lzip源码并解压,进入解压后形成的目录
wget http://download.savannah.gnu.org/releases/lzip/lzip->1.22-pre1.tar.gz tar -zxvf lzip-1.22-pre1.tar.gz cd lzip-1.22-pre1
预编译、编译和安装
/configure --prefix=/usr/local/lzip make make install
注意:
make install
时出现如下情况可不予理会if [ ! -d "/usr/local/lzip/bin" ] ; then install -d -m 755 >"/usr/local/lzip/bin" ; fi install: cannot create directory ‘/usr/local/lzip’: Permission >denied Makefile:87: recipe for target 'install-bin' failed make: *** [install-bin] Error 1
环境配置
vim ~/.bashrc
在文件的最后输入:
PATH=$PATH:/usr/local/lzip/bin
保存并退出,
使环境变量生效:source ~/.bashrc
2、依赖项安装
1) 底层依赖项
Pypbc基于于GMP和PBC两个库,其中GMP又依赖于M4,bison,flex。
因此我们需要将依赖库根据依赖关系一一配置好。
sudo apt-get install update
sudo apt-get install M4
sudo apt-get install flex
sudo apt-get install bison
注意:
若安装update
和M4
是出现以下情况表示已存在,不予理会
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package M4
2)安装GMP
直接到到官网下载GMP 对应版本,或者使用如下命令下载GMP包
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz
转到下载目录执行如下命令安装gmp-6.1.2(make
时间较长)
lzip -d gmp-6.1.2.tar.lz
tar -xvf gmp-6.1.2.tar
cd gmp-6.1.2
./configure
make
make check
sudo make install
3)安装PBC
直接到官网下载PBC相应版本,或者使用命令下载
wget --no-check-certificate https://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz
然后转到下载目录执行如下命令安装pbc-0.5.14(make
时间较长)
tar -xvf pbc-0.5.14.tar.gz
cd pbc-0.5.14
./configure
make
sudo make install
4) 安装PYPBC
从Github直接下载或使用如下命令克隆pypbc源码
git clone git://github.com/debatem1/pypbc
转到下载目录,执行下列命令
cd pypbc
sudo python3 setup.py install
sudo pip3 install pypbc
pypbc
已经安装成功,且pip list
中已经出现pypbc
******@ubuntu:~/lzip-1.22-pre1/gmp-6.1.2/pbc-0.5.14/pypbc$ pip3 list
apturl (0.5.2)
beautifulsoup4 (4.4.1)
......
pypbc (0.2)
......
3、问题解决
pypbc
安装成功后,在python
中使用时却出现错位
>>> import pypbc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libpbc.so.1: cannot open shared object file: No such file or directory
原因:
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误,原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib .so. 文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可。另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件。
解决方法
1)在ld.so.conf中进行修改
在 /etc/ld.so.conf.d 目录下新建了一个conf文件 libpbc_x64.conf,内容为libpbc.so.1所在路径:
cd /etc/ld.so.conf.d
sudo touch libpbc_x64.conf
echo /usr/local/lib > libpbc_x64.conf
(若指令写不进去,使用vim打开文件,把/usr/local/lib写进去保存并关闭即可)
(要使用sudo vim打开)
(上述路径也可以直接写在ld.so.conf中)
然后要更新cache:
sudo ldconfig
问题解决