Ubuntu18.04.4 环境下对属性加密算法CP-ABE环境搭建

注意事项

  • cpabe依赖pbc,pbc依赖gmp,gmp依赖M4、bison、flex
  • 如果权限不够 ,命令的前面加上sudo ,不要直接使用root用户进行操作,其带来的隐患有很多

第一步 配置简单的环境

  • 简单环境 包括gcc、g++、make、cmake、openssl
  • 安装之前需要更新apt-get ,命令如下   sudo apt-get update
  • gcc安装:sudo apt-get install gcc
  • g++安装:gcc sudo apt-get install g++
  • make安装:gcc sudo apt-get install make
  • cmake比较麻烦  cmake安装参考链接
  • openssl安装:  sudo apt-get install openssl   和   sudo apt-get install libssl-dev

参考链接

第二步 安装M4、bison、flex

  • M4、bison、flex均可以在terminal中通过sudo apt-get install方式直接安装
  • sudo apt-get install M4
  • sudo apt-get install flex
  • sudo apt-get install bison

第三步 安装GMP

  • GMP下载地址
  • 使用 命令xz -d gmp-6.2.1.tar.xz解压文件,生成一个tar格式的文件
  • 如果使用命令sudo tar -xvf gmp-6.2.1.tar失败的话,或者没有安装xz的话,最好使用7zip完成第一步解压的任务,然后将tar文件上传到ubuntu,使用tar命令解压文件
  • tar命令 不要出现 z,只有-xvf三个元素
  • 不要使用7zip解压tar文件,再将文件夹上传到ubuntu,这个会出错

  • cd gmp-6.2.1.tar.xz 进入解压目录
  • ./configure  --enable-cxx 
  • 开始编译
  • sudo make
  • make check
  • sudo make install

测试

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gmp.h>
 
int main()
{
        mpz_t a,b;
 
        mpz_init(a);
        mpz_init(b);
 
        mpz_init_set_ui(a, 2);
        mpz_pow_ui(b, a, 1000);
        gmp_printf("b = %Zd\n", b);
 
        mpz_clear(a);
        mpz_clear(b);
 
        return 0;
}
// 计算2的1000次方
  • 新建.c文件 名字是test_gmp.c
  • 使用命令进行编译  gcc -o test test_gmp.c -lgmp
  • 使用命令 ./test 进行测试

参考链接

第四步安装PBC

  • tar -xvf pbc-0.5.14.tar.gz
  • cd pbc-0.5.14
  • ./configure
  • sudo make
  • sudo make install

测试

  • 测试代码
#include "pbc.h"
int main(void) 
{ 
printf("this is a test\n");
return 0; 
} 
  •  如果使用常规编译方式会出现错误 
  • 正确编译方式:gcc -o foo foo.c -I /usr/local/include/pbc -L /usr/local/lib -Wl,-rpath /usr/local/lib -l pbc
  • 原因解释:Programming in Linux
  • 终端运行 ./foo
  • 运行成功输出内容如下  this is  a test

第五步 安装属性加密算法CP-ABE

需要先安装 libbswabe

  • tar -xvf libbswabe-0.9.tar.gz
  • cd libbswabe-0.9
  • ./configure
  • sudo make
  • sudo make install

再安装cpabe

  • tar -xvf cpabe-0.11.tar.gz
  • cd cpabe-0.11
  • ./configure
  • sudo make

错误1

/usr/bin/ld: /usr/local/lib/libpbc.so: undefined reference to symbol '__gmpz_init'
/usr/local/lib/libgmp.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:34: recipe for target 'cpabe-setup' failed
make: *** [cpabe-setup] Error 1

 解决办法 修改Makefile

  • vi Makefile
  • 进入Makefile,注意这里M一定是大写,进入后找到找到以LDFLAGS开头的以下部分
  • 注意:这里需要用到vi编辑的一些知识。在进入Makefile后,将光标移至-lcrypto -lcrypto后面,输入i进入编辑模式,输入”\”,然后enter,另起一行,然后直接按Tab,输入-lgmp (-lgmp前面必须是TAB键)。输入的时候小心,多任何一个空格都会出错!完成后按Ese退出编辑模式,然后输入冒号“:”进入命令模式,会发现光标定位到了最低端,此时输入wq即保存退出vi了,如果编辑错了也不用担心,在“:”后输入 q! 即可不保存退出,然后重新进入修改。

旧版本

LDFLAGS = -O3 -Wall \
    -lglib-2.0  \
    -Wl,-rpath /usr/local/lib -lgmp \
    -Wl,-rpath /usr/local/lib -lpbc \
    -lbswabe \
    -lcrypto -lcrypto

新版本

LDFLAGS = -O3 -Wall \
    -lglib-2.0  \
    -Wl,-rpath /usr/local/lib -lgmp \
    -Wl,-rpath /usr/local/lib -lpbc \
    -lbswabe \
    -lcrypto -lcrypto \
    -lgmp 
  • sudo make 开始编译

错误2

policy_lang.y: In function ‘yyparse’:
policy_lang.y:67:38: error: expected ‘;’ before ‘}’ token
Makefile:50: recipe for target 'policy_lang.o' failed
make: *** [policy_lang.o] Error 1
  • 修改policy_lang.y
  • 在 67行的 } 前加入;即可
  • sudo make
  • sudo make install

测试

  • cpabe-setup -h
  • 如果结果和下文一致,表明安装成功

参考链接

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值