当前位置: 首页 > news >正文

CP-ABE ToolKit 安装笔记

博主论文狗,好久没有来贴博客,最近做实验需要用到属性加密,了解了下CP-ABE,前来记录一下:

网上相关的博文较多,博主看了大部分的,认为下面这两个看完了基本就可以成功安装。

可参见博文:

http://blog.csdn.net/hlsdbd1990/article/details/48291359

http://blog.csdn.net/huifeideyema/article/details/51695231

 (一)相关概念

cp-abe需要用到许多算法库,像M4、bison、flex、gmp、pbc,且cpabe依赖pbc,pbc依赖gmp,gmp依赖M4、bison、flex

M4 :是一个宏处理器.将输入拷贝到输出,同时将宏展开. 宏可以是内嵌的也可以是用户定义的. 除了可以展开宏,m4还有一些内建的函数,用来引用文件,执行Unix命令,整数运算,文本操作,循环等. m4既可以作为编译器的前端也可以单独作为一个宏处理器.M4 依赖于: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed等;

bison: Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序. 

flex:是一个产生扫描器的工具;能识别文本模式的词句的程序.flex读入给定的文件,或没有文件名给定时的标准输入,即要产生的扫描器的说明.说明按照正规表达式和C代码的格式,叫做规则.flex产生定义了例程'yylex()'的'lex.yy.c'C源码文件,该文件被编译和用'-lfl'标志链接库以产生可执行文件,当可执行文件被运行后,它分析以正规表达式出现的输入.无论何时它找到匹配,都将执行相应的C代码.(bison flex实际上就是用于实现属性加密中访问控制策略)

gmp:GMP是一个任意精度的开源算术库,可用于符号整数,有理数,浮点数计算。

pbc:基于对数运算的算法库

 

(二)安装

1、安装m4

sudo apt-get install m4

2、安装gmp
http://gmplib.org/   下载gmplib

./configure
make
make check
sudo make install

3、安装pbc
http://crypto.stanford.edu/pbc/download.html  下载pbc
解压,安装

./configure

出现

 flex not found

执行

sudo apt-get install flex

安装成功后继续执行

./configure

出现

bison not found

 

运行 

sudo apt-get install bison

成功后执行

./configure 
make
sudo make install

4、安装cpabe toolkit

http://hms.isi.jhu.edu/acsc/cpabe/ 或者 http://acsc.cs.utexas.edu/cpabe/ 下载cpabe-0.11和libbswabe-0.9

安装openSSL

sudo apt-get install libssl-dev

进入libbswabe-0.9解压目录

/configure 

报错

checking for GLIB - version >= 2.0.0... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.

执行

sudo apt-get install libglib2.0-dev

安装成功后,执行

./configure
make
sudo make install

进入cpabe-0.11解压目录

./configure 

出错

/usr/bin/ld: note: '__gmpz_init' is defined in DSO /usr/local/lib/libgmp.so so try adding it to the linker command line
/usr/local/lib/libgmp.so: could not read symbols: 无效的操作

改为另一种方式编译:

sudo apt-get install checkinstall

修改Makefile,LDFLAGS后加入-lgmp

sudo checkinstall

编译成功~

 

(三)报错

除了上述报错外,执行checkinstall以后也有可能出现这种错误

 gcc -o cpabe-setup setup.o common.o -O3 -Wall -lglib-2.0 -Wl,-rpath /usr/local/lib -lgmp -Wl,-rpath /usr/local/lib -lpbc -lbswabe -lcrypto -lcrypto  
 /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</pre></code

或者出现这种错误

    policy_lang.y: In function ‘yyparse’:
    policy_lang.y:67:38: error: expected ‘;’ before ‘}’ token
    result: policy { final_policy = $1 }


***解决方法***
https://ubuntuforums.org/showthread.php?t=2254939
或者http://stackoverflow.com/questions/17373306/error-in-linking-gmp-while-compiling-cpabe-package-from-its-source-code

 

 安装成功以后出现如下界面

 

图片摘自http://blog.csdn.net/guomutian911/article/details/42558155

 

转载于:https://www.cnblogs.com/cjy15639731813/p/6654196.html

相关文章:

  • js数组去重的三种常用方法总结
  • DPDK QoS之分层调度器
  • 对于文本框的验证(考虑兼容问题)
  • 114. Flatten Binary Tree to Linked List (leetcode)
  • 大数据与应用统计学的区别与联系
  • 在ElasticSearch中使用 IK 中文分词插件
  • Ubuntu 16.04 中安装谷歌 Chrome 浏览器
  • SSH使用密钥免密码登录
  • Ajax和跨域问题
  • 使用HTML5的canvas做图片剪裁
  • java异常处理(Exception handing)机制
  • 四则运算 web 版
  • 201521123030 《Java程序设计》第7周学习总结
  • Ajax异步封装
  • 闭包与循环
  • C语言笔记(第一章:C语言编程)
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6核心特性
  • go append函数以及写入
  • JavaScript-Array类型
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js写一个简单的选项卡
  • MySQL用户中的%到底包不包括localhost?
  • Phpstorm怎样批量删除空行?
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 树莓派 - 使用须知
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 延迟脚本的方式
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​什么是bug?bug的源头在哪里?
  • ###STL(标准模板库)
  • #define、const、typedef的差别
  • (07)Hive——窗口函数详解
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (ZT)薛涌:谈贫说富
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)c++ std::pair 与 std::make
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net Core和.Net Standard直观理解
  • .NET Core中Emit的使用
  • .Net MVC + EF搭建学生管理系统
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET连接数据库方式
  • .Net转前端开发-启航篇,如何定制博客园主题