J'aimerais fournir un code std::ostream
qui peut ou non, du point de vue de l'utilisateur, chiffrer son contenu.Manipulation transparente des chaînes insérées dans un ostream
Imaginez une fonction aléatoire qui utilise un std::ostream&
:
void write_stuff(std::ostream& stream) {
os << "stuff";
}
Que stuff
est sortie en texte clair ou est chiffré dépend de la façon dont l'argument stream
a été initialisé.
Je songe à hériter de std::basic_streambuf
, mais je ne suis pas sûr que ce soit la meilleure solution. Je pense que le scénario idéal est une sorte d'objet filtre qui est exécuté avant que le contenu ne soit réellement sorti. De cette façon, il serait facile de chaîner des opérations, par ex. cryptage, puis codage hexadécimal, ce qui est un avantage que mon propre basic_streambuf
ne semble pas donner (pas facilement au moins).
Des conseils?
Merci.
MISE À JOUR: J'ai suivi la stratégie définie par la réponse acceptée. J'ai trouvé cet article sur l'écriture d'un custom streambuf
which performs XOR obfuscation pour être extrêmement utile comme point de départ.
pouvez-vous partager votre solution? Merci.En passant, est-ce que votre enregistreur est basé sur Petru Marginean's publié dans Dr. Dobbs environ un mois avant votre publication? http://www.drdobbs.com/cpp/logging-in-c/201804215 – user1823664