欢迎来到天天文库
浏览记录
ID:16323896
大小:39.50 KB
页数:5页
时间:2018-08-09
《cryptopp库的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Cryptopp库的使用1. 安装及配置1.1.编译下载下来,将工程导入到vs中,打开,有4个工程。全部编译一遍。如果编译有问题的话,也可以只编译cryptlib工程。至于另外几个工程,不是很清楚。我试了只编译cryptlib的工程,貌似也可以。编译完了后,在“.Win32OutputDebug”目录下可以找到cryptlib.lib文件。 1.2.编译选项问题这里有一点值得提一下的是,编译选项的问题。Cryptopp工程默认的编译选项是/MTd。所以,如果你没有改它的话,把这样编译后的lib用到你自己的工程中去
2、的话,你的工程的编译选项也必须调成/MTd,否则链接的时候可能会报错。或者,你可以选择,按照你工程的编译选项的需要(如/MDd),在编译Cryptlib的时候,先调整编译选项,再把编译后的lib引入到工程中,这样就没问题了。 调整编译选项:工程->右键->属性->ConfigurationProperties->C/C++->CodeGeneration:RuntimeLibrary。1.3.引入工程1.引入相关头文件在你的工程目录,右键->属性->ConfigurationProperties->C/C++->Gener
3、al:AdditionalIncludeDirectories,填入Cryptopp库的源代码所在目录。如:C:DevCommoncryptopp5611.引入lib库1).在你的工程目录,右键->属性->ConfigurationProperties->Linker->General:AdditionalLibraryDirectories,填入cryptlib.lib所在的目录。2).在下面的Linker->Input:AdditionalDependencies,填入:cryptlib.lib。3).在Linke
4、r->CommandLine:Additionaloptions中填入:cryptlib.lib。 上面的2)或者3)任选一个都可以。 2. HelloWorld配置完毕后,写个HelloWorld测试一下,看能不能编译通过。 #include#include usingnamespacestd;usingnamespaceCryptoPP; intmain(){ cout<<"hellocrypto++"<5、BLOCKSIZE<6、, newBase64Encoder(newStringSink(encoded)) ); cout<7、m>>msg; Weak::MD5md5; md5.CalculateDigest(m,msg,len); //此一句等于下面两句 //md5.Update(msg,len); //md5.Final(m); StringSourcess(m,sizeof(m),true, newHexEncoder(newStringSink(digest)) ); delete[]msg; returntrue;} 注:1、CalculateDigest(m,msg,len)方法等效于8、下面两个语句md5.Update(msg,len);md5.Final(m); 2、关于数组byte[]m,用于接收数字签名数组m的长度16,这个是怎么来的呢?查看API帮助文档可以发现,其实这个是由方法DigestSize()定义的,同时一个静态的常量DIGESTSIZE也定义了该长度。使用的时候,可
5、BLOCKSIZE<6、, newBase64Encoder(newStringSink(encoded)) ); cout<7、m>>msg; Weak::MD5md5; md5.CalculateDigest(m,msg,len); //此一句等于下面两句 //md5.Update(msg,len); //md5.Final(m); StringSourcess(m,sizeof(m),true, newHexEncoder(newStringSink(digest)) ); delete[]msg; returntrue;} 注:1、CalculateDigest(m,msg,len)方法等效于8、下面两个语句md5.Update(msg,len);md5.Final(m); 2、关于数组byte[]m,用于接收数字签名数组m的长度16,这个是怎么来的呢?查看API帮助文档可以发现,其实这个是由方法DigestSize()定义的,同时一个静态的常量DIGESTSIZE也定义了该长度。使用的时候,可
6、, newBase64Encoder(newStringSink(encoded)) ); cout<7、m>>msg; Weak::MD5md5; md5.CalculateDigest(m,msg,len); //此一句等于下面两句 //md5.Update(msg,len); //md5.Final(m); StringSourcess(m,sizeof(m),true, newHexEncoder(newStringSink(digest)) ); delete[]msg; returntrue;} 注:1、CalculateDigest(m,msg,len)方法等效于8、下面两个语句md5.Update(msg,len);md5.Final(m); 2、关于数组byte[]m,用于接收数字签名数组m的长度16,这个是怎么来的呢?查看API帮助文档可以发现,其实这个是由方法DigestSize()定义的,同时一个静态的常量DIGESTSIZE也定义了该长度。使用的时候,可
7、m>>msg; Weak::MD5md5; md5.CalculateDigest(m,msg,len); //此一句等于下面两句 //md5.Update(msg,len); //md5.Final(m); StringSourcess(m,sizeof(m),true, newHexEncoder(newStringSink(digest)) ); delete[]msg; returntrue;} 注:1、CalculateDigest(m,msg,len)方法等效于
8、下面两个语句md5.Update(msg,len);md5.Final(m); 2、关于数组byte[]m,用于接收数字签名数组m的长度16,这个是怎么来的呢?查看API帮助文档可以发现,其实这个是由方法DigestSize()定义的,同时一个静态的常量DIGESTSIZE也定义了该长度。使用的时候,可
此文档下载收益归作者所有