C++ でてけとーな暗号化/復号化
排他的論理和を使用したてきとーな暗号化。
[ソース]
#include <algorithm> struct ango{ explicit ango(int key) : key(key){} template<typename Range> Range operator ()(Range range) const{ typedef typename std::iterator_traits<decltype(std::begin(range))>::value_type value_type; auto result = std::move(range); std::transform(std::begin(result), std::end(result), std::begin(result), [this](value_type const& value){ return value ^ this->key; }); return result; } private: int key; }; #include <string> #include <iostream> int main(){ int key = 42; ango filter(key); std::string str("satikokawaii"); auto crypted = filter(str); std::cout << crypted << std::endl; auto decoded = filter(crypted); std::cout << decoded << std::endl; return 0; }
[出力]
YK^CAEAK]KCC satikokawaii
まぁ平文よりマシってレベルですかねぇ。
暗号化よりも鍵の扱いをどうするかの方がむずかしそう。
この手の処理って Boost にないんだろうか。