前言
我的技术博客从新浪搬家到CSDN的时候,有一些小的感觉没什么用的博客都删掉了… 结果,今天有位朋友给我微博留言,表明其正在研究Pairing-Based Cryptography Library函数库,发现我相关的这篇博客被我删除了,问我能否回复一下… 在此要给开发PBC以及密码学的朋友们说声抱歉哈!每一篇博客的价值并非是总访问量问题这么简单,每一篇博客都有不同的受众群体。因此,我应该把我认为有价值,有用的,可以帮助到大家的博客都搬移过来。
因此,我决定在CSDN我的技术博客中恢复这一篇对做密码学相关朋友有帮助的博客。如果因为我删除博客而对朋友们有一定的影响,我再次向大家道歉!
另外,我实验室的师弟师妹们根据我的Guideline配置后,也遇到了一些问题,再次我也一并写在这一篇恢复博客中,供大家参考。因为每一台电脑的情况都有所不同,因此即使是严格的技术博客,也可能无法考虑到各种情况,希望大家见谅。如果有任何问题,欢迎给我发送邮件,或者直接在博客下面留言,我将尽我所能帮助到大家,如有必要,我们可以进一步在QQ上,微信上,甚至当面交流:)我的邮箱是:footman_900217@126.com。
主观动机
我自己是搞密码学的,实现的时候免不了用用Linux C;有时候也玩点GPS、北斗接收机什么的,再有时候玩玩Android什么的,没准过几天还能玩玩Windows8(刚刚从MSTC那边定了一个SurfacePro,这是转入.NET开发的节奏么…)。除了Windows这个蛋疼的平台(唉,要不是Windows上面有一个传说中的Microsoft Office和各种游戏,我早就彻底用Ubuntu了!LaTeX部分解决了这个问题,但是大多数人还是得用Word,PPT,Visio什么的吧,这个真心没办法),前面几个还都是挺好玩的。
言归正传,密码学里面有个东西叫做双线性对(Bilinear Pairing),只要是最近10年做密码学的人肯定知道这个推动密码学发展的数学函数了。Stanford网络安全实验室(负责人叫做Dan Boneh,是我最崇拜的密码学家,没有之一!)在Linux平台下用C语言开发了一个叫做PBC(Pairing-Based Cryptography) Library的东西,实现了双线性对,并且是遵守开源协议的,因此成为了密码学家验证方案正确性,以及测试方案效率的不二选择。但是这个库对于刚刚接触Linux的朋友们来说还真挺难驾驭的,尤其是习惯在IDE环境里面开发的朋友们来说,特别是喜欢在Eclipse开发的朋友们…这PBC库的使用满足了EclipseCDT开发的所有问题,列举如下:
- PBC安装之前要先安装GMP,而如何从源代码安装软件是使用Linux必须要学会的。
- PBC按照默认配置安装后,so和a文件存放于/usr/local/lib/文件夹中,一般的软件也都是这样。但是头文件放置在/usr/local/include/pbc/文件夹中,也就是说PBC库在/usr/local/include中建了一个文件夹,然后把头文件放在了里面。这一下挡住了很多想在Eclipse下用PBC开发的人,因为不配置的话Eclipse找不到这个头文件的目录。
- 如果想运行PBC中的example,都需要在main函数传参数,也就是把常数文件路径通过main传参。在Terminal中给main传参大家都会,但是如何在Eclipse中给C的main函数传参?这又挡住了很多人。
- 根据PBC官网的说法,因为PBC的实现中有个Bug,因此需要给Linux C编译器多传入一个参数。这个参数怎么在Eclipese里面配置呢?这进一步把朋友们逼疯了…
- 密码学中还有一个非常知名的库,就是OpenSSL中的Crypto库。这个库几乎包含了所有的密码学相关函数。但是想在Eclipse中应用OpenSSL中的Crypto库开发比PBC更繁琐一些,这是因为默认安装OpenSSL后,其Crypto库竟然根本不在/usr/local/lib里面,而是直接在/usr/local/目录下面建了一个SSL文件夹,然后把所有的头文件和库文件放在这个文件夹里面。
因此,我觉得很有必要写一篇博客总结一下Eclipse中C开发所需要的各种配置。一方面是给自己留一个笔记,另一方面以后实验室再来师弟师妹就不用自己再讲一遍了,也是为我节省点体力吧:)
客观动机
最近自己在搞Android上面的PBC开发,写个Server端写个Client端,Server端是Java+ Linux C混合编程;Client端是Java+ NDK C混合编程。客观条件也得让我把整个配置环境跑通吧!
内容介绍
本篇博客不会详细介绍的内容
(1)Eclipse + CDT的安装
Eclipse的安装太简单了,Ubuntu下面直接apt-getinstall eclipse就行了,如果找不到安装包请修改Ubuntu的软件源。不过apt-get所安装的Eclipse版本比较旧,如果想安装新版的Eclipse,请参考Eclipse官方网站给出的安装方法。Eclipse官方网址:http://www.eclipse.org/。
CDT的安装也相当简单,请参考EclipseCDT插件官方网站给出的安装方法。
(2)GMP以及PBC的源代码安装
经典三部曲:./configure,make,makeinstall。GMP官方网址: