摘要:
首先当然是先定义头文件Thread.h咯,如下:#ifndef _THREAD_H#define _THREAD_H#ifdef _WIN32#include <windows.h>#else#include <pthread.h>#endif#ifdef _WIN32typedef unsigned threadfunc_t;typedef void* threadparam_t;#define STDPREFIX __stdcall#elsetypedef void* threadfunc_t;typedef void* threadparam_t;#define 阅读全文
摘要:
1)STL中的函数random_shuffle()用来对一个元素序列进行重新排序(随机的),函数原型如下:template<class RandomAccessIterator> void random_shuffle( RandomAccessIterator _First, //指向序列首元素的迭代器 RandomAccessIterator _Last //指向序列最后一个元素的下一个位置的迭代器 );template<class RandomAccessIterator, class RandomNumberGenerator> void random_shuf 阅读全文
摘要:
1)首先定义互斥对象的接口IMutex(所在文件是IMutex.h)class IMutex //抽象接口{public: virtual ~IMutex() {} virtual void Lock() const = 0; virtual void Unlock() const = 0;};2)接着是实现IMutex接口的实现类Mutex头文件是Mutex.h:#ifndef _WIN32#include <pthread.h>#else#include <windows.h>#endif#include "IMutex.h"class Mute 阅读全文
摘要:
研究下托盘程序,或者说:任务栏通知区域(Tray)图标。很多应用程序在系统Shell任务栏通知区域有图标提示。通知区域图标适用于长时间运行但无需用户过多操作,并在有事件发生时可随时根据情况通知用户的应用程序(如即时通信工具、下载工具等)。使用任务通知区域图标的好处如下:1) 窗口程序可以在后台运行,窗口退出,但是程序仍然在运行,减少窗口数量,便于用户操作;2) 窗口最小化后,不占用任务栏的位置,使用户在操作主机时将精力集中在需关注的窗口;3) 在新事件发生时(如新的即时消息、文件下载完成等),可以即时通知到用户;4) 用户通过单击、双击图标、图标菜单等可以很方便地配置应用程序,控制应用程序的运 阅读全文
摘要:
1)SCardListReaders函数用来获取系统中在指定读卡器组集合中的读卡器名字列表(去掉重复的)。调用者提供一读卡器组列表,函数返回这些指定组里面的读卡器名字列表;无法标识的组名将被忽略。LONG WINAPI SCardListReaders( __in SCARDCONTEXT hContext, //由SCardEstablishContext()建立的资源管理器上下文,//不能为NULL __in_opt LPCTSTR mszGroups, //读卡器组名,为NULL时表示列出系统中所有读卡器 __out LPTSTR mszReaders, //系统中指定读卡器组中的读卡器 阅读全文
摘要:
Windows系统提供了大量的API来方便的进行智能卡应用程序的开发,通过它们我们可以直接控制智能卡读卡器对智能卡进行操作,也可以与智能卡建立直接的虚拟连接而不用考虑智能卡读卡器。智能卡应用程序开发的一般流程是:1)建立连接(使用函数SCardEstablishContext和SCardConnect,SCardReconnect);2)开始事务处理(使用函数SCardBeginTransaction);3)进行事务处理(使用函数SCardTransmit);4)结束事务处理(使用函数SCardEndTransaction);5)断开连接(使用函数SCardDisconnect和SCardRe 阅读全文
摘要:
使用Crypto++的MD5算法对字符串进行哈希,先在VS2010中新建Win32 Console Application,取工程名为:Crypto-MD5。在工程主目录中新建文件夹include,将Crpyto++的头文件放进去,在同一目录新建lib文件夹,在lib文件夹中再建两个文件夹Debug和Release,之后将Crypto++的调试版和发布版cryptlib.lib分别放到前面两个文件夹中。打开工程Crypto-MD5.cpp文件,修改添加代码如下:==========================Crypto-MD5.cpp====================#includ 阅读全文
摘要:
eccrypto.h提供了基于椭圆曲线加密操作的一系列模板类,将这些类设计成模板主要的原因是有两种类型椭圆曲线。因此,类EC2N(ec2n.h)代表的是基于GF(2n)的椭圆曲线算法;而类ECP(ecp.h)代表的是基于GF(p)的椭圆曲线算法。椭圆曲线的参数保存在模板类ECParameters中,参数能够以多种方式初始化;但是其中一个更实用的用法是使用函数LoadRecommendedParameters(),它提供了建议参数之一,定义在oids.h中。下面看几个实例代码:1)生成一个EC2N密钥对,并保存之:// ECPrivateKey is used directly only bec 阅读全文
摘要:
Base64Encoder是一个接收任何数据输入并将之转换成base64编码的过滤器,并可选地在每行满72个字符时进行换行。在现行版本的Crypto++中,类Base64Encoder对象在销毁时并没有执行对缓冲区中的数据进行编码。因此,除了在一个包含Base64Encoder过滤器的过滤器对象链中,当Base64Encoder之前没有其他过滤器时,函数MessageEnd()会被自动调用外,我们必须在数据输入结束时显式地调用函数MessageEnd()。(注意:MessageEnd()的nPropagation参数能被使用的情况是:当和Base64Encoder关联的其他过滤器对象不需要me 阅读全文
摘要:
Crypto++用户手册のrsa.h:与RSA加解密相关的类都是在rsa.h头文件中定义的。其中类RSAFunction和类InvertibleRSAFunction是分别封装了RSA公钥和私钥信息的基础类,这两个类支持直接通过函数ApplyFunction (公钥操作)和函数CalculateInverse(私钥操作)进行RSA的计算。我们只有在完全清楚自己的操作的情况下,同时使用正确补位(padding),才能直接使用这两个函数。一般情况下,我们更多使用的是rsa.h中通过typedef定义的类型:typedef RSAES<OAEP<SHA> >::Decrypt 阅读全文