社区
C++ 语言
帖子详情
cryptopp的使用
SammyLan
2007-05-12 07:02:05
有谁了解cryptopp库的
源码中的示例有点乱,而且时间比较急,暂时不想看那些示例
如果有谁比较熟悉的
麻烦简单说一下使用该库需要做什么样的初始化
最好能给个简单的使用MD5,RSA,DES算法的例子
谢谢了
...全文
2511
18
打赏
收藏
cryptopp的使用
有谁了解cryptopp库的 源码中的示例有点乱,而且时间比较急,暂时不想看那些示例 如果有谁比较熟悉的 麻烦简单说一下使用该库需要做什么样的初始化 最好能给个简单的使用MD5,RSA,DES算法的例子 谢谢了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
代码误解
2021-06-13
打赏
举报
回复
cryptopp库示例代码:https://gitee.com/locomotive_crypto
AdrianYu
2012-09-23
打赏
举报
回复
Mark, 等回去了再看
matthew1985
2010-08-09
打赏
举报
回复
..en......................
spofmy
2007-05-15
打赏
举报
回复
学习了
ly19820701
2007-05-15
打赏
举报
回复
mark
Oversense
2007-05-14
打赏
举报
回复
Crypto++ 挺好用的
/*
SHA (or any other hash module) is used like this:
#include "sha.h" // or "md5.h" for MD5, etc
...
SHA().CalculateDigest(pbOutputBuffer, pbData, nDataLen);
// pbOutputBuffer must be SHA::DIGESTSIZE bytes in length
or, if you have data that's made up of multiple pieces:
SHA hash;
hash.Update(pbData1, nData1Len);
hash.Update(pbData2, nData2Len);
hash.Update(pbData3, nData3Len);
hash.Final(pbOutputBuffer);
*/
/*
How do I use hex encoding and decoding?
#include "hex.h"
// Encoding
HexEncoder hexEncoder;
hexEncoder.Put(pDataA,dwLenA);
hexEncoder.Put(pDataB,dwLenB);
hexEncoder.Put(pDataC,dwLenC);
hexEncoder.MessageEnd();
hexEncoder.Get(pData2,(dwLenA+dwLenB+dwLenC)*2);
// Decoding
HexDecoder hexDecoder;
hexDecoder.Put(pData,dwLen);
hexDecoder.MessageEnd();
hexDecoder.Get(pData2,dwLen/2);
*/
SammyLan
2007-05-12
打赏
举报
回复
下载了一个OpenSSL,没有VSS的工程文件,很不习惯
各位有什么好建议
介绍一个简单易用的加密算法库
不要求速度,只要求易用就行了
先谢谢了
lockhall
2007-05-12
打赏
举报
回复
第一次听说...
mLee79
2007-05-12
打赏
举报
回复
以前用过,现在都改用 openssl 了 。。。
foochow
2007-05-12
打赏
举报
回复
纯粹的接分。
jixingzhong
2007-05-12
打赏
举报
回复
只用过 openssl,
Crypto++ 只是在当时了解了一下,
sammy 看看这些东东有没有帮助 ....
jixingzhong
2007-05-12
打赏
举报
回复
Crypto++首页上提供了Crypto++ User Guide这个入门指南的链接,这本指南属于一定要看的资料,不过可惜的是这也是找到的唯一一本指南了:(。User Guide上面的有一些例子,其中对AES用法的说明不太直接,而AES之类对称加密算法又比较常用,所以我这里写了一个AES的例子。
例子是直接用AES加密一个块,AES的数据块大小为128位,密钥长度可选择128位、192位或256位。直接用AES加密一个块很少用,因为我们平常都是加密任意长度的数据,需要选择CFB等加密模式。但是直接的块加密是对称加密的基础。
#include <iostream>
using namespace std;
#include <cryptopp/aes.h>
using namespace CryptoPP;
int main()
{
//AES中使用的固定参数是以类AES中定义的enum数据类型出现的,而不是成员函数或变量
//因此需要用::符号来索引
cout << "AES Parameters: " << endl;
cout << "Algorithm name : " << AES::StaticAlgorithmName() << endl;
//Crypto++库中一般用字节数来表示长度,而不是常用的字节数
cout << "Block size : " << AES::BLOCKSIZE * 8 << endl;
cout << "Min key length : " << AES::MIN_KEYLENGTH * 8 << endl;
cout << "Max key length : " << AES::MAX_KEYLENGTH * 8 << endl;
//AES中只包含一些固定的数据,而加密解密的功能由AESEncryption和AESDecryption来完成
//加密过程
AESEncryption aesEncryptor; //加密器
unsigned char aesKey[AES::DEFAULT_KEYLENGTH]; //密钥
unsigned char inBlock[AES::BLOCKSIZE] = "123456789"; //要加密的数据块
unsigned char outBlock[AES::BLOCKSIZE]; //加密后的密文块
unsigned char xorBlock[AES::BLOCKSIZE]; //必须设定为全零
memset( xorBlock, 0, AES::BLOCKSIZE ); //置零
aesEncryptor.SetKey( aesKey, AES::DEFAULT_KEYLENGTH ); //设定加密密钥
aesEncryptor.ProcessAndXorBlock( inBlock, xorBlock, outBlock ); //加密
//以16进制显示加密后的数据
for( int i=0; i<16; i++ ) {
cout << hex << (int)outBlock[i] << " ";
}
cout << endl;
//解密
AESDecryption aesDecryptor;
unsigned char plainText[AES::BLOCKSIZE];
aesDecryptor.SetKey( aesKey, AES::DEFAULT_KEYLENGTH );
aesDecryptor.ProcessAndXorBlock( outBlock, xorBlock, plainText );
for( int i=0; i<16; i++ ) { cout << plainText[i]; }
cout << endl;
return 0;
}
这里面有几个地方要注意一下:
AES并不是一个类,而是类Rijndael的一个typedef。
Rijndael虽然是一个类,但是其用法和namespace很像,本身没有什么成员函数和成员变量,只是在类体里面定义了一系列的类和数据类型(enum),真正能够进行加密解密的AESEncryption和AESDecryption都是定义在这个类内部的类。
AESEncryption和AESDecryption除了可以用SetKey()这个函数设置密钥,在构造函数中也能设置密钥,参数和SetKey()是一样的。
ProcessAndXorBlock ()可能会让人比较疑惑,函数名的意思是ProcessBlock and XorBlock,ProcessBlock就是对块进行加密或解密,XorBlock在各种加密模式中有用,这里我们不需要应用模式,因此把用来Xor 操作的xorBlock置为0,那么Xor操作就不起作用了。
jixingzhong
2007-05-12
打赏
举报
回复
Crypto++的安装
首先到www.cryptopp.com上下载最新版本的源代码,如果是windows版的,会得到一个VC的项目,直接用VC打开就可以编译了。这里建议大家使用最新版的C++编译器,因为诸如 VC6的编译器是不支持C++的标准的,很多符合C++标准的代码不能编译通过。编译的时间比较长,完成后会生成cryptlib.lib这个库文件。可以将Crypto++源文件的目录命名为cryptopp,拷贝到编译器的include目录(例如:C:\VS.NET\VC7\include),将 cryptlib.lib文件拷贝到编译器的lib目录。这样我们只需要说明链接cryptlib.lib即可。例如在VC7中在项目->属性- >链接器->命令行->附加选项中添加“cryptlib.lib”。
Hello World
现在写一个hello world程序看看能不能编译通过。
#include <iostream>
using namespace std;
#include <cryptopp/aes.h>
using namespace CryptoPP;
int main()
{
cout << "hello crypto++" << endl;
cout << "Aes block size is " << AES::BLOCKSIZE << endl;
return 0;
}
编译运行,一切OK,哈哈:D,可以用了。
jixingzhong
2007-05-12
打赏
举报
回复
http://maths.utime.cn:81/bbs/dispbbs.asp?boardid=25&id=5152&star=1&page=1
这里有使用的方法和一些简单的例子
jixingzhong
2007-05-12
打赏
举报
回复
http://www.cryptopp.com/ 找 User Guide
jixingzhong
2007-05-12
打赏
举报
回复
原来是 Crypto++ 的别名啊 ...
jixingzhong
2007-05-12
打赏
举报
回复
cryptopp?
几个经典加密库捉拿嘎没有这个吧?
healer_kx
2007-05-12
打赏
举报
回复
纯粹的接分。
cryptopp
安装
使用
它由Wei Dai在1995年创建,旨在提供一个容易
使用
的、高效的、免费的加密算法实现。今天,我们将详细介绍如何在Windows系统下安装并
使用
Crypto++库。 ### 安装Crypto++ #### 下载并解压函数库 首先,我们需要下载...
cryptopp
的des加密解密
标题"
cryptopp
的DES加密解密"指出我们将讨论的是
使用
Cryptopp
库进行DES(Data Encryption Standard)加密与解密的方法。
Cryptopp
是一个强大的、免费的C++类库,提供了多种密码学算法,包括DES,用于数据的安全传输和...
用C++开源库
cryptopp
封装的Aes对称加密
本篇文章将深入探讨如何
使用
C++开源库
Cryptopp
来封装Aes对称加密,并且特别关注如何在Android和Java平台上实现该功能。
Cryptopp
是一个强大的、免费的C++类库,提供了多种加密、解密、哈希和伪随机数生成算法,包括...
VS2010编译
CryptoPP
代码
使用
在本文中,我们将深入探讨如何
使用
Visual Studio 2010(VS2010)编译
CryptoPP
库,并在完成后创建一个测试工程以验证其功能。
CryptoPP
是一个开源的C++类库,提供了大量的密码学算法,如AES(高级加密标准)和其他加密...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章