恥ずかしい暗号化コード
古いコードの中にこんなんがあった。どうやらバイナリ中に平文パスワードを入れたくなかったらしいんだけど。
std::string& encode(std::string& s, int seed) { std::string* ret = new std::string(); for (std::string::iterator i = s.begin(); i != s.end(); i++) { seed = *i ^ seed; *ret += seed; } return *ret; } std::string& decode(std::string& s, int seed) { std::string* ret = new std::string(); for (std::string::iterator i = s.begin(); i != s.end(); i++) { char x = *i ^ seed; *ret += x; seed ^= x; } return *ret; }
簡単なもんを入れてみるとこんなかんじ。
tkuro
>> \x15~\x0by\x16: successed
sawshark
>> \x12s\x04w\x1f~\x0cg: successed
Hogerimakuri
>> )F!D6_2S8M?V: successed
ponponpain
>> \x11~\x10`\x0fa\x11p\x19w: successed
一応、難読化はされるんだけど、リーク危険だし、鍵が実用上8bitしかないってなによそれでかなり恥ずかしいんだけど、普通はこういう場合どうするのかな?? というのが気になって晒して見ました。あとで調べてみよ。