PBC库的官方网址是http://crypto.stanford.edu/pbc/,下载地址为http://crypto.stanford.edu/pbc/download.html,里面提供了linux和windows版本的PBC库。我本人不习惯在linux下面调试运行程序,为了在VS中调试,折腾了一个星期才配置好。为了记录自己的配置过程并且使更多的人少走弯路,现在将我自己的配置过程记录下来。

我选择在MinGW中对PBC和GMP库进行编译,这个过程网上有很多参考,比如这个网址http://94it.net/a/jingxuanboke/2013/0809/90464.html,自己编译不出来的话,我已经把编译好的libpbc.a、libgmp.a、libgcc.a、libmingwex.a和gmp.h文件和我自己用的PBC文件放到百度网盘中,有需要的可以自行下载,下载网址为http://pan.baidu.com/s/1gd6HAUZ,提取密码为:k63m,有可能用我的include文件会出现错误,请大家尽量下载官网的文件配置,或者参考这篇博客的评论。有了这些东西我们就可以开始在VS中配置了。关于在VS中配置PBC库,有个网址可以参考下,http://stackoverflow.com/questions/25446726/running-pbc-in-windows-visual-studio,但是这个网址没有截图,我现在将配置的过程以图的形式展示一遍。

打开VS2010,鼠标放在你自己的项目上,右击,选择>属性,之后就出来上面的截图页面了,我已经标好了顺序,在红色标号4 这里注意,附加包含目录就是把PBC文件的include目录下所有的.h文件附加进去,还要再把gmp.h文件附加进去,其中gmp.h我已经放在了网盘的include.rar文件中,可以直接解压之后把整个include目录附加。

接下来在上面的页面中配置链接器:

同理注意第3步,这一步把用MinGW编译生成的libpbc.a、libgmp.a、libgcc.a、libmingwex.a文件附加,这四个.a文件我已经放到网盘中了,可以自行下载之后按照步骤附加。

最后是命令行参数配置:

命令行参数配置是为了运行时,使程序找到自己运行时需要的参数,这里我选择了PBC\param下面的a.param参数来作为运行参数,此处就直接填写了a.param,大家可以用根据自己的需要自行选择此文件夹下的参数。这个a.param要事先放到自己的项目下面,为了防止运行时找不到参数,我将这个a.param在项目文件夹和项目的Debug文件夹下都放了一个。

这些都选择好之后。点击“应用”、“确定”。我们就可以进行VS2010中的PBC库开发了。

在用VS2010运行程序时,先生成解决方案,然后在选择开始调试不执行,这样是为了避免VS中运行控制台程序时出现控制台一闪而过的情况。

下面把我写的一个简单的代码贴上来,这个算法被称为BasicCL-PKE的无证书加密体制,可以参考这篇论文:Al-riyami S S, Paterson K G. Certificateless Public Key Cryptography[J]. Lecture Notes in Computer Science, 2003, 133(2):452--473.

#include <pbc.h>
#include <pbc_test.h>#define LEN 6
int main(int argc, char **argv) {pairing_t pairing;element_t s,x,r;element_t P,Ppub,Qu,Du,Su,Xu,Yu,V;element_t T1,T2;double time1,time2;int byte;pbc_demo_pairing_init(pairing, argc, argv);//将变量初始化为Zr上的元素element_init_Zr(s,pairing);element_init_Zr(r,pairing);element_init_Zr(x,pairing);//将变量初始化为G1上的元素element_init_G1(P,pairing);element_init_G1(Ppub,pairing);element_init_G1(Qu,pairing);element_init_G1(Du,pairing);element_init_G1(Su,pairing);element_init_G1(Xu,pairing);element_init_G1(Yu,pairing);element_init_G1(V,pairing);//将变量初始化为GT中的元素element_init_GT(T1,pairing);element_init_GT(T2,pairing);//判断所用的配对是否为对称配对if(!pairing_is_symmetric(pairing)){fprintf(stderr,"只能在对称配对下运行");exit(1);
}printf("BasicCL-PKE scheme\n");printf("———————————系统建立阶段——————————\n");element_random(s);element_random(P);element_mul_zn(Ppub,P,s);element_printf("P=%B\n",P);element_printf("s=%B\n",s);element_printf("Ppub=%B\n",Ppub);printf("———————部分私钥提取———————\n");element_random(Qu);//随机选取Quelement_mul_zn(Du,Qu,s);//Du=sQuelement_printf("private key is Du=%B\n",Du);printf("—————设置秘密值阶段————\n");element_random(x);element_printf("秘密值为=%B\n",x);printf("—————设置私钥————\n");element_mul_zn(Su,Du,x);element_printf("完全私钥 Su=%B\n",Su);printf("—————设置公钥————\n");element_mul_zn(Xu,P,x);//Xu=xPelement_mul_zn(Yu,Ppub,x);//Yu=xPprintf("公钥为:\n");element_printf("Xu=%B\n",Xu);element_printf("Yu=%B\n",Yu);printf("———————————加密阶段——————————\n");pairing_apply(T1,Xu,Ppub,pairing);//T1=e(Xu,Ppub)pairing_apply(T2,Yu,P,pairing);//T2=e(Yu,P)//判断公钥是否正确if(!element_cmp(T1,T2)){element_random(r);element_mul_zn(V,P,r);//V=rP注意顺序pairing_apply(T1,Yu,Qu,pairing);//T1=e(Yu,Qu)element_pow_zn(T1,T1,r);//T1^relement_printf("V=%B\n",V);element_printf("e(Yu,Qu)^r=%B\n",T1);}else{printf("错误! 公钥不正确\n");exit(1);}printf("———————————解密阶段——————————\n");pairing_apply(T2,V,Su,pairing);element_printf("e(V,Su)=%B\n",T2);byte=element_length_in_bytes(V);printf("密文总共字节长度为%d\n",byte+128);
return 0;}

运行结果为:

关于代码的实例,我会晚点发出来,欢迎大家有问题与我私信讨论。

在VS2010配置并运行PBC库程序相关推荐

  1. excel一直显示“操作系统当前的配置不能运行此应用程序”

    问题描述 我的系统win10,操作x64,安装office2019,由于学习中不经常使用到excel时隔半年我今天打开excel一直显示"操作系统当前的配置不能运行此应用程序 ", ...

  2. 【Win10】打开控制面板提示:操作系统当前的配置不能运行此应用程序

    打开控制面板提示操作系统当前的配置不能运行此应用程序 问题描述: win10系统,打开控制面板时,提示:操作系统当前的配置不能运行此应用程序,并且点击确定后,打开的控制面板界面在刷新后自动关闭,任务栏 ...

  3. Android转后台(一)——IntelliJ IDEA配置环境运行APP后台程序

    本文出自:http://blog.csdn.net/dt235201314/article/details/78850036 一丶概述 先不确定是否转后台,学点后台知识也是必须的,另外,Android ...

  4. solidworks出现操作系统当前的配置不能运行此应用程序

    参考解决方案来源:solidworks贴吧 卸载重装Office 最直接的解决方案就是将office先卸载,之后再进行安装.亲测有效,没有出现什么错误. 卸载附件cam 这是吧上的另一个方法,这个方法 ...

  5. 解决 office安全模式启动失败,操作系统当前配置不能运行此程序(已解决)

    office遇见下问题解决办法 解决Excel问题 以安全模式启动失败,操作系统当前配置不能运行此程序.卸载不全,重装仍然存在问题的. 一.官方卸载重装方式(我没成功) 进入页面 微软office卸载 ...

  6. 使用 Access 数据库引擎 ODBC 界面时出现“当前未配置运行此应用程序的操作系统”错误

    问题 更新到 Office 后,如果使用由Access数据库引擎实现的 ODBC 接口程序,可能会遇到错误. 在指定"Microsoft Access 驱动程序 (*.mdb, *.accd ...

  7. 【原】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题...

    --更新于2011/4/19,针对最新的VS2008补丁,VS2005/2010同样适用. VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示&q ...

  8. PyQt5 环境搭建+配置+怎样运行生成的.py程序

    PyQt5 环境搭建+配置+怎样运行生成的.py程序 PyQt5安装及配置 安装 配置 Error while finding module specification for 'PyQt5.uic. ...

  9. Armadillo使用介绍(九):下载Armadillo、配置工程、运行第一个程序

    一.下载Armadillo 通过以下两种途径下载Armadillo C++库源码: Armadillo Download page 如下图所示,可以下载到最新版本的armadillo库(随着时间变化, ...

  10. C++运行时候库操作概述和整个程序运行流程

    一.任何一个C/C++程序,它的背后都是一套庞大的代码来进行支撑,以使得该程序能够正常运行.这套代码至少包括入口函数.及其依赖的函数所构成的函数集合.当然,它还应该包括各种标准函数(如字符串,数学运算 ...

最新文章

  1. 到底什么时候该使用MQ 1
  2. linux java aptget_apt-get没有安装任何linux服务器
  3. json 数据 生成 图表_CAPP工艺图表 / 知识重用 快速编制
  4. 【剑指offer】面试题43:n个骰子的点数
  5. 洛谷P1155 双栈排序
  6. forum.php 重定向,解析php 版获取重定向后的地址(代码)
  7. devStack安装OpenStack Ocata版本 (Linux Bridge+VLAN)
  8. Spring IoC,Spring Bean示例教程
  9. MySQL导入MongoDB
  10. 【MYSQL权限】数据库权限部署
  11. npm 报错cb.apply is not a function
  12. 使用Hbuilder将自己app发布到App Store
  13. html语言个人网页,个人网页介绍家乡纯html
  14. AODV协议代码详述
  15. vs格式化代码快捷键_VisualStudio高效率快捷键设置建议
  16. PS教程:清凉一下美女海报设计教程及素材
  17. thymeleaf中三元运算符嵌套写法
  18. 错误Could not locate executable null\bin\winutils.exe in the Hadoop binaries的解决方案
  19. 2021个人开通抖音小店条件,抖音蓝v有什么好与弊
  20. 苏州企业申请高新技术企业重新认定需要注意这四点

热门文章

  1. Java验证码生成工具类(简洁高效)
  2. 推箱子c语言代码有注释,C语言推箱子源代码推箱子代码完善
  3. [雨松MOMO程序研究院]Unity3D研究院之构建游戏框架与导出IOS项目(一)
  4. 虚短”“虚断”两板斧,搞定运算放大器 11张大图详(转)
  5. 最大流最小割经典例题_hiho 第116周,最大流最小割定理,求最小割集S,T
  6. Docker配置加速器
  7. 数学建模——层次分析法(Matlab)【评价类问题】
  8. rs485转profinet网关485协议传报文解决方案远创智控
  9. 【windows 自搭服务器】小白教程
  10. php爬虫框架crawler