はじめまして。ぷーといいます。
間違って送信ボタンを押してしまいました。ゴメンナサイ!
ファイルにデータを書き込んだり読み出したりしているのですが、
一つ分からない事があるので質問させてください。
hFile = _open(data, O_BINARY | _O_CREAT | _O_WRONLY, _S_IWRITE);
_write(hFile, szFilePath, sizeof(szFilePath));
_close( hFile );
というコードを書いた場合、dataというファイルには普通に読める文字列が入ります。
つまり、メモ帳などで開けば普通に読めちゃうわけです。そうじゃなくて、
自分のツールからじゃないと読めない形式でデータを保存するにはどうすればいいのでしょう
か?
みなさんはどうされているのでしょうか?参考資料・アドバイス等があれば教えてください。
保存する前に全bitを反転させてみてはどうでしょうか。
それだけでメモ帳を見ることはできなくなります。
もっと本格的に対策をするならば、データを暗号化する必要があります。
方法については、検索サイトで、「暗号」「暗号化アルゴリズム」あたりをキーワードに
検索してみてください。
普通は読めたほうが便利な場合が多いのでそのままにしていると思いますよ。
セキュリティ上必要であれば、MASATOさんがかかれているように暗号化が必要でしょう。
暗号化と一口に言っても気休めレベルの物から本格的なものまで幅広いです。
自分で暗号のアルゴリズムを考えるという手もありますが、
書き込まれている内容から受けた印象ではそれは難しいような気がします。
既存の技術を調べてみてはどうでしょうか?
MASATOさん、PATIOさん、レスありがとうございます。
暗号化について少しWebをさまよってみたのですが、具体的なやり方を
説明しているところを見つけることができませんでした(たぶん検索の仕方が悪いのだ
と・・・)。
用途から考えると強固な暗号化の必要はありません。メモ帳などで強引に開かれても
内容が意味不明であればOKなんです。ただexeファイルをテキストエディタで開いた時に
読めない字の羅列が表示されるような感じで表示できたらなぁと思ったんです。
もう少し自分でも調べてみますが、またアドバイス等ありましたらよろしくお願いします。
全bit反転コードの例
書き込むとき
-----
int i;
hFile = _open(data, O_BINARY | _O_CREAT | _O_WRONLY, _S_IWRITE);
for(i = 0; i < sizeof(szFilePath); i++)szFilePath[i] = ~szFilePath[i];
_write(hFile, szFilePath, sizeof(szFilePath));
_close( hFile );
-----
読み込むときも、読み込んだあと以下のコードを実行すれば元に戻ります。
int i;
for(i = 0; i < sizeof(szFilePath); i++)szFilePath[i] = ~szFilePath[i];
応用はいろいろありそうです。
ビットの反転でも結構読めなくなりますねー。
とりあえずはこの方法で処理します。
ありがとうございました。