Использование криптографических потоков в C ++

StackOverflow https://stackoverflow.com/questions/4669306

  •  10-10-2019
  •  | 
  •  

Вопрос

Я хотел бы использовать некоторые криптографические операции (в основном интегрированная проверка хешсумы). Однако у меня есть проблемы с поиском документаций о выполнении операций такой формы:

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;
}

Пса Это может быть другая библиотека при условии, что это а) совместимо с GPL-3 B) Работы на GNU/Linux

Ппс. Я не настаиваю на Crypto ++, однако я хотел бы иметь iostream-подобное поведение для совместимости с другими библиотеками C ++.

Это было полезно?

Решение

Реализуйте свой собственный iStream Использование Crypto ++.

Другие советы

Crypto ++ Filesource класс берет std::istream& В конструкторе, похоже, вы закончили.

FileSource (std::istream &in, bool pumpAll, 
    BufferedTransformation *attachment=NULL)

РЕДАКТИРОВАТЬ

Если вы спрашиваете how to use a hash function on istream in cryptopp, вот образец, взятый из Cryptopp Wiki, модифицировано мной для использования с istream:

#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 нить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top