ゲームでプレーヤーのデータを暗号化および復号化するための非常に単純な Caesar 暗号アルゴリズムを作成しようとしていますが、奇妙な結果が得られます。アルゴリズムのタスクは単純で、ASCII テーブル内の文字を前方または後方にプッシュするだけです。
std::string Encrypt(std::string in,int key)
{
const char* chars=in.data();
char* newchar=(char*)malloc(sizeof(char)*in.length());
for(int c=0;c<in.length();c++)
{
newchar[c]=char(((int)chars[c])+key);//I suspect somewhere here is the problem
}
std::string out(newchar);
return out;
}
LOGI("encrypt:%s",Encrypt("hello",10).data());
LOGI("decrypt:%s",Encrypt(Encrypt("hello",10),-10).data());
出力:
encrypt:rovvyu@
decrypt:hellok
私は暗号化についてあまり知りませんし、ASCII と文字全体が c でどのように機能するかについてもあまり知りません