暗号化
Boost.Serializationでserializeしたバイナリデータを,暗号化.
…は略したけど,バイナリデータに対してBoost.Serializationを呼ぶ.
バイナリデータを扱うときはfopenとか使わなきゃならないんだよね.
std::fstreamとか使うと色々整形されたりしてうまく扱えない.
使い方が間違ってるのかなぁ.
ていうか,これって安全なのかなぁ?
とかよく考えます.
#include <stdio.h> //for FILE #include <string> #include <iostream> #include <fstream> #include <sstream> #include <boost/serialization/serialization.hpp> #include <boost/archive/binary_iarchive.hpp> #include <boost/archive/binary_oarchive.hpp> int main(){ int n = 3; // お試しデータ // 書き込むときのバイナリ化はめんどいので略 { std::ofstream ofs("data.txt", std::ios_base::out | std::ios_base::binary); boost::archive::binary_oarchive ar(ofs); ar << (const int&)n; } // バイナリを取得 FILE* fp = fopen("data.txt", "rb"); fseek(fp, 0, SEEK_END); long size = ftell(fp); // ファイルサイズ fseek(fp, 0, SEEK_SET); char* buf = new char[size]; fread(buf, sizeof(char), size, fp); fclose(fp); // ここでバイナリをいじる(複合化とか) std::string str(buf, size); delete [] buf; std::istringstream iss(str, std::ios_base::in | std::ios_base::binary); int result; booost::archive::binary_iarchive ar(iss); ar >> result; std::cout << result; // 3 }
ぁー,fopen_sとかあったら使ってくださいね.
自分は_wfopen_sをラップしたafc::utility::c_fileを使ってますが.
あと失敗した時は…ってのも略w