在VS2010配置并运行PBC库程序
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库程序相关推荐
- excel一直显示“操作系统当前的配置不能运行此应用程序”
问题描述 我的系统win10,操作x64,安装office2019,由于学习中不经常使用到excel时隔半年我今天打开excel一直显示"操作系统当前的配置不能运行此应用程序 ", ...
- 【Win10】打开控制面板提示:操作系统当前的配置不能运行此应用程序
打开控制面板提示操作系统当前的配置不能运行此应用程序 问题描述: win10系统,打开控制面板时,提示:操作系统当前的配置不能运行此应用程序,并且点击确定后,打开的控制面板界面在刷新后自动关闭,任务栏 ...
- Android转后台(一)——IntelliJ IDEA配置环境运行APP后台程序
本文出自:http://blog.csdn.net/dt235201314/article/details/78850036 一丶概述 先不确定是否转后台,学点后台知识也是必须的,另外,Android ...
- solidworks出现操作系统当前的配置不能运行此应用程序
参考解决方案来源:solidworks贴吧 卸载重装Office 最直接的解决方案就是将office先卸载,之后再进行安装.亲测有效,没有出现什么错误. 卸载附件cam 这是吧上的另一个方法,这个方法 ...
- 解决 office安全模式启动失败,操作系统当前配置不能运行此程序(已解决)
office遇见下问题解决办法 解决Excel问题 以安全模式启动失败,操作系统当前配置不能运行此程序.卸载不全,重装仍然存在问题的. 一.官方卸载重装方式(我没成功) 进入页面 微软office卸载 ...
- 使用 Access 数据库引擎 ODBC 界面时出现“当前未配置运行此应用程序的操作系统”错误
问题 更新到 Office 后,如果使用由Access数据库引擎实现的 ODBC 接口程序,可能会遇到错误. 在指定"Microsoft Access 驱动程序 (*.mdb, *.accd ...
- 【原】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题...
--更新于2011/4/19,针对最新的VS2008补丁,VS2005/2010同样适用. VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示&q ...
- PyQt5 环境搭建+配置+怎样运行生成的.py程序
PyQt5 环境搭建+配置+怎样运行生成的.py程序 PyQt5安装及配置 安装 配置 Error while finding module specification for 'PyQt5.uic. ...
- Armadillo使用介绍(九):下载Armadillo、配置工程、运行第一个程序
一.下载Armadillo 通过以下两种途径下载Armadillo C++库源码: Armadillo Download page 如下图所示,可以下载到最新版本的armadillo库(随着时间变化, ...
- C++运行时候库操作概述和整个程序运行流程
一.任何一个C/C++程序,它的背后都是一套庞大的代码来进行支撑,以使得该程序能够正常运行.这套代码至少包括入口函数.及其依赖的函数所构成的函数集合.当然,它还应该包括各种标准函数(如字符串,数学运算 ...
最新文章
- 到底什么时候该使用MQ 1
- linux java aptget_apt-get没有安装任何linux服务器
- json 数据 生成 图表_CAPP工艺图表 / 知识重用 快速编制
- 【剑指offer】面试题43:n个骰子的点数
- 洛谷P1155 双栈排序
- forum.php 重定向,解析php 版获取重定向后的地址(代码)
- devStack安装OpenStack Ocata版本 (Linux Bridge+VLAN)
- Spring IoC,Spring Bean示例教程
- MySQL导入MongoDB
- 【MYSQL权限】数据库权限部署
- npm 报错cb.apply is not a function
- 使用Hbuilder将自己app发布到App Store
- html语言个人网页,个人网页介绍家乡纯html
- AODV协议代码详述
- vs格式化代码快捷键_VisualStudio高效率快捷键设置建议
- PS教程:清凉一下美女海报设计教程及素材
- thymeleaf中三元运算符嵌套写法
- 错误Could not locate executable null\bin\winutils.exe in the Hadoop binaries的解决方案
- 2021个人开通抖音小店条件,抖音蓝v有什么好与弊
- 苏州企业申请高新技术企业重新认定需要注意这四点
热门文章
- Java验证码生成工具类(简洁高效)
- 推箱子c语言代码有注释,C语言推箱子源代码推箱子代码完善
- [雨松MOMO程序研究院]Unity3D研究院之构建游戏框架与导出IOS项目(一)
- 虚短”“虚断”两板斧,搞定运算放大器 11张大图详(转)
- 最大流最小割经典例题_hiho 第116周,最大流最小割定理,求最小割集S,T
- Docker配置加速器
- 数学建模——层次分析法(Matlab)【评价类问题】
- rs485转profinet网关485协议传报文解决方案远创智控
- 【windows 自搭服务器】小白教程
- php爬虫框架crawler