在C++ GUI Qt中使用QCA进行安全性编程之一

来源:互联网 发布:淘宝如何延期付款 编辑:程序博客网 时间:2024/06/05 06:21

QCA是C++ GUI Qt中的一个第三方插件,为Qt提供了一个针对安全性方面编程的框架。从QCA的名称不难发现,它的设计在很多方面借鉴了JCE(Java Cryptography Extension)——QCA定义了一组公共接口,并由不同的提供者提供加解密算法实现。开发者通过调用简单的API,就可以轻松的实现对称加解密、非对称加解密以及数字证书等功能。QCA是跨平台的,可以运行在Windows、Unix和MacOSX等不同的平台上。

当然,在C++下有很多其他的安全性函数库,比如:Botan、Cryptlib、Crypto++等,都是一些不错的加解密函数库。但是从某种角度看,Qt并不属于pure C++的范畴,它虽然使用C++做为开发语言,但是在整个SDK的框架设计上却又非常的类似于Java(有些类的设计思想和实现方法都完全一样),所以Qt一直以来都是我作为弥补Java GUI编程缺憾的一个非常强有力的工具。

继续回到我们的QCA上,之所以我选择了QCA,是因为QCA的API设计沿袭了Qt的数据类型和编程习惯,所以对于Qt开发者来说是最具亲和力的,而且和Qt SDK的结合紧密度也是最高的。网上有不少写QCA的文章,但是总体质量都不是很高,也没有一个比较系统完整的讲解QCA使用过程的,更没有实际的使用范例。因此在我开发的过程中遇到了不少麻烦。也正因为这样,才有了我的用武之地,我想把我最近的一个Qt项目中有关QCA部分截取出来,做为一个比较完整系统的QCA中文教程,并采用一个数字证书加密的例子作为具体实践的例程。

QCA的安装还是比较简单的,和一般的C/C++函数库安装方法大致相同(configure、make && make install)。QCA的安装和配置是网上写的最多的文章,但是又是写的最不好的。大部分都是抄袭官网上的,更有甚者直接复制官网的说明作为自己的文章内容!大概是由于环境的缘故或是其他什么原因,按照网上的那些文章去安装和配置QCA,我总是以失败告终。因此最后还是通过自己阅读官方的说明文档才成功的完成了QCA的安装和配置。先说一下我的开发环境:

  1. 操作系统:windows 7(32位旗舰版)。
  2. C++编译器:MinGW(这里需要注意,一开始我用的是官网最新版本的MinGW,也就是可以在线安装的那个版本,但是最新的MinGW和Qt 4.8.5版本是不匹配的,因此后来从网上下载了一个免安装的MinGW编译器(gcc 3.81版本),这才解决了问题,如果有人需要可以点击这里下载)。
  3. Qt:qt-win-opensource-4.8.5-mingw.exe。
  4. QCA:qca-2.0.3.tar.bz2和qca-ossl-2.0.0-beta3.tar.bz2,前一个文件是QCA框架,后一个是加密算法的提供者。提供者实现了各种加解密算法,以供开发者调用。
  5. OpenSSL:Win32OpenSSL-1_0_0g.exe(这里需要注意:在安装OpenSSL之前必须安装VC++2008库)。

由于MinGW是免安装的,所以直接复制到某个目录即可,例如:C:\MinGW,然后在环境变量Path中设置一下bin路径即可。要验证一下gcc是否工作正常,可以打开一个命令行窗口,在命令行提示符下输入make -version命令,如果没有报错,就表示gcc可以正常工作了。

接下去是安装Qt开发库,由于在windows下安装Qt库是最简单的,而且网上的文章也没什么问题,所以我这里就不再赘述了。下面就是我们的关键内容:安装和配置QCA。

QCA可以去它的官网上下载:http://delta.affinix.com/qca,如下图所示:


(图1 QCA的官网下载)

从上图中可以看到,QCA是需要依赖OpenSSL的。也就是说,QCA是OpenSSL的一个Qt版本封装。因此我们必须先安装OpenSSL,我安装的是Win32OpenSSL-1_0_0g.exe。可以点击这里下载(由于加密算法是被美国军方严格管控出口的,所以我们用的都是一些公开的加密算法且密钥强度级别都是很低的,但是对于我们民用来说已经足够了)。OpenSSL的安装超级简单,不再赘述。

下载之后,我们拿到了2个文件:qca-2.0.3.tar.bz2和qca-ossl-2.0.0-beta3.tar.bz2。我们先安装qca-2.0.3.tar.bz2,首先解压缩,并将其放在任意的目录中,这里需要注意,不要将其放到Qt的安装目录中进行编译,否则make的时候会报错。例如,我将其放在D:\qca\qca-2.0.3。打开命令行窗口,将目录切换到qca-2.0.3目录下。然后执行configure.exe命令,如下图所示:

图2

(图2)

执行configure命令会检查Qt的编译环境和本地证书数据库。如上图所示QCA检查环境成功,可以执行编译了。如果检查失败一般是由于没有定义%QTDIR%环境变量或是make命令不可执行所致,所以应该去检查一下自己系统的Qt和gcc编译器的环境变量设置。

接下去,输入make命令,开始编译和连接QCA库,如下图所示:

图3

(图3)

经过大概10分钟左右的滚屏,如果出现图3中所示的内容,则表示make成功。

按照官网的说法,接下去只要执行installwin命令即可,但是在实际开发中还是发现了一些小问题,故需要进行一些额外的工作。

1. 修改qca-2.0.3目录下的installwin.bat文件,用任意的文本编辑器打开此文件,例如:EditPlus等。修改红色框中的部分,如下图所示:

(图4)

将其修改成“%QTDIR%”,这是为了开发的方便,之后我们要将QCA的头文件和库文件整合到Qt开发库中。

2. 修改qca-2.0.3目录下的crypto.prf.in文件,用任意的文本编辑器打开此文件,例如:EditPlus等。修改红色框中的部分,如下图所示:

(图5)

将其修改成“-lqca2”,否则在链接动态库时会报错。好了,现在可以继续执行installwin.bat命令了,如下图所示:

(图6)

该命令会在%QTDIR%\mkspecs\features目录中生成一个crypto.prf文件,该文件是一个Qt插件配置文件,以后在我们开发代码的时候会用到它。

至此QCA框架基本安装完成,接下去将头文件、库文件以及动态链接库复制到Qt的安装目录中即可,如下:

1. 将D:\qca\qca-2.0.3\lib目录中的libqca2.a和qca.prl文件复制到%QTDIR%\lib目录中;

2. 将D:\qca\qca-2.0.3\bin目录中的qca2.dll和qcatool2.exe文件复制到%QTDIR%\bin目录中(qcatool2是QCA的一个小工具,之后我们会用到它);

3. 将D:\qca\qca-2.0.3\include目录下的QtCrypto目录整个的复制到%QTDIR%\include目录中。

终于,QCA框架安装完成。接下去,我们用qcatool2小工具来验证一下。如下图所示:

我们在命令行下输入qcatool2 plugins命令,会显示出当前QCA可用的提供者,由于目前我们还没有安装任何的提供者库,所以在“Available Providers”一栏中是空的。要使用加解密算法,我们必须要安装一个提供者——qca-ossl。

下一篇文章我们将继续安装QCA的一个加密算法库提供者。敬请期待!



0 0
原创粉丝点击