CryptoPP的使用以及设计原理和设计思想
CryptoPP是一个用C++语言编写的著名的密码学库。该密码学库主要包含的算法有:分组密码、流密码、哈希函数,消息认证码,随机数发生器,密钥协商,数字签名,公钥加密算法等等。除此之外,该密码学库还包含一些其他常用的算法,例如压缩算法,数据编码算法等等。
柳亓
这个作者很懒,什么都没留下…
展开
-
CryptoPP的 Salsa20算法的使用(加密字符串)
密码学库CryptoPP中包含的对称密码算法包含分组密码算法和流密码算法。关于分组密码算法的使用,详见:https://blog.youkuaiyun.com/Lunar_Queen/article/details/82220980(以AES为例)。 密码学库Cryptopp中包含的流密码算法较少,如下图所示: 和随机数发生器、分组密码算法等一样,流密码算法也是密码学的一个重要分支。在Cryptopp...原创 2018-08-31 12:55:21 · 4181 阅读 · 1 评论 -
CryptoPP的 Timer算法的使用
密码学库Cryptopp不仅给提供了丰富的密码学算法,而且还包含了一些有用的工具类算法,比如本次要讲到的Timer,使用该类定义的对象,可以在程序中统计某一段代码的运行时间。前面我们在讲解随机数发生器的使用的时候,在程序中用到统计产生1G bits的随机数需要的时间。那时,我们使用的C语言库函数clock()。CryptoPP的LC_RNG算法的使用: https://blog.csdn.n...原创 2018-08-31 20:18:08 · 633 阅读 · 1 评论 -
CryptoPP的 AutoSeededRandomPool算法的使用
AutoSeededRandomPool随机数发生器也是一个CryptoPP的无需外部输入种子的随机数发生器。它会利用系统提供的RNG算法来产生随机数。该算法的设计思想由 Leonard Janke.提出。 源代码如下:#include<cryptlib.h>#include<osrng.h>//包含AutoSeededRandomPool算法的头文件#inc...原创 2018-08-31 10:46:00 · 2264 阅读 · 1 评论 -
CryptoPP的 AutoSeededX917RNG算法的使用
AutoSeededX917RNG算法是CryptoPP密码学库提供的又一系列随机数发生器,为什么说其是“一系列”而不是“一个”算法。从CryptoPP的源代码和帮助文档中可以看到,AutoSeededX917RNG是一个类模板,它的类型参数可以是任何的分组密码算法。因此,可以将AutoSeededX917RNG和Cryptopp中的任何分组密码进行组合,就可以产生一种新的随机数发生器。Aut...原创 2018-08-30 17:23:19 · 513 阅读 · 0 评论 -
CryptoPP的 AES算法的使用(加密字符串)
密码学库CryptoPP中包含了大量的分组密码算法。如下图所示: 今天,介绍一下其中的AES算法的使用。下面的示例程序演示了如何使用CryptoPP加密和解密一个字符串。示例代码如下:#include<cryptlib.h>#include&am原创 2018-08-30 14:35:39 · 6343 阅读 · 1 评论 -
CryptoPP的 NonblockingRng算法的使用
和前面提到的RandomPool算法一样,NonblockingRng算法也不需要外部输入种子。 RandomPool算法:https://blog.youkuaiyun.com/lunar_queen/article/details/81560777。该算法包含在CryptoPP的osrng.h头文件中。 源代码如下:#include<cryptlib.h>#include<...原创 2018-08-30 10:05:53 · 435 阅读 · 1 评论 -
CryptoPP的BlockingRng算法的使用
随机数发生器是密码学的一个重要原语。密码学库CryptoPP中提供了一些随机数发生器算法。今天,讲解一下BlockingRng随机数发生器算法的使用。 注意:该算法是对linux下的 /dev/random和/dev/srandom进行了封装,因此,该算法仅能在linux系统下使用。在其帮助wendna 源代码如下://#define BLOCKING_RNG_AVAILABLE#...原创 2018-08-23 16:05:40 · 452 阅读 · 1 评论 -
CryptoPP的RandomPool算法的使用
随机数发生器是密码学的一个重要原语。密码学库CryptoPP中提供了一些随机数发生器算法。前面讲述了LC_RNG算法的使用:https://blog.youkuaiyun.com/Lunar_Queen/article/details/81542372。今天,讲解一下RandomPool随机数发生器算法的使用。...原创 2018-08-10 11:44:50 · 1878 阅读 · 3 评论 -
CryptoPP的LC_RNG算法的使用
随机数发生器是密码学的一个重要原语。密码学库CryptoPP中提供了一些随机数发生器算法。今天,介绍一些其中LC_RNG算法的使用。该库中的LC_RNG算法就是著名的线性同余发生器算法。该算法由于执行效率高而被广泛使用,C语言库函数中的rand()算法就是一个线性同余发生器。 该算法在程序库中的继承结构如下: 可以看到,类LC_RNG继承自类RandomNumberGenerator,类R...原创 2018-08-09 18:58:41 · 1799 阅读 · 0 评论 -
CryptoPP版本验证
在使用第三方程序库时,可能会遇到程序库的版本不匹配的问题。 下面介绍在使用CryptoPP时,如何验证其版本,代码如下:#include<cryptlib.h>#include<iostream>using namespace std;using namespace CryptoPP;int main(){ if (LibraryVersio...原创 2018-08-08 18:04:29 · 920 阅读 · 1 评论