首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中使用加密流

在C++中使用加密流
EN

Stack Overflow用户
提问于 2011-01-12 21:30:04
回答 2查看 4.5K关注 0票数 3

我想使用一些加密操作(主要是完整性检查hashsum)。然而,我在查找执行这种形式的操作的文档时遇到了问题:

代码语言:javascript
复制
bool read(std::istream &in) {
    hasher hv(in);
    // Do some operations on hv as if it was std::istream
    hash_type h = hv.finish ();
    hash_type h2 = read_hash(in);
    return h == h2;
}

PS。如果a)兼容GPL-3 b)可以在GNU/Linux上运行,那么它可能是不同库

PPS。我并不坚持使用crypto++,但是我希望使用类似于IOStream的行为来实现与其他C++库的互操作性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-12 21:49:31

使用crypto++的Implement your own istream

票数 0
EN

Stack Overflow用户

发布于 2011-01-13 00:59:25

crypto++的FileSource类在构造函数中接受std::istream&,所以看起来你已经完成了。

代码语言:javascript
复制
FileSource (std::istream &in, bool pumpAll, 
    BufferedTransformation *attachment=NULL)

编辑

如果你在问how to use a hash function on istream in cryptopp,这里有一个取自cryptopp wiki的样本,由我修改后用于istream

代码语言:javascript
复制
#include "sha.h"
#include "files.h"

std::string digest;

CryptoPP::SHA256 hash;

CryptoPP::FileSource(in, true,   // true here means consume all input at once 
   new CryptoPP::HashFilter(hash,
         new CryptoPP::StringSink(digest)));

std::cout << digest << std::endl;

这将读取流in,直到eof,通过hash过滤器传递它,最后结果将在digest字符串中enf。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4669306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档