こんにちはすべてのiveは、文字列へのポインタを取り、各バイトを対応する暗号化文字に変更できる単純な小さな暗号化関数を作成しました。関数を実行すると、テキストがプレーンテキストに戻ります。
私の問題は、const char *p = "...";
宣言された変数でこの関数を使用したいのですが、これらは実行時にメモリにロードされ、書き込みできないため、それは単純に不可能です。
これが私の機能です。
char *Cipher(char *str)
{
char *p = str;
while(*p)
{
if(*p >= ' ' && *p <= 'O')
{
*p = ((*p + 48) % 127);
}
else if(*p >= 'P' && *p <= '~')
{
*p = ((*p - 48) % 127);
}
p++;
}
return str;
}
文字列へのポインタを取得し、すべての文字を置き換えて、そのポインタを文字列に戻します(printfや引数として受け入れるものなどの他の関数内で使用できるようにするためchar*
)。
これらのconst char*
ポインタを操作するには、それらを関数のローカルメモリにコピーして変更する必要があることがわかりましたが、他の関数に渡すことができるように、新しくエンコードまたはデコードされた文字列へのポインタを返すにはどうすればよいですか。(最終的な目標は、それを単純なチャットプログラムに含めることであり、私はそれを次のようなものと呼びたいと思いますsend(sock, Cipher(PRE_HEADER), strlen(PRE_HEADER));
)また、これを行う方法はスレッドセーフではないと思います。アプリケーションどのような変更を加える必要がありますか?
単純な文字列換字式暗号の他の代替コードも受け入れています。
どんな助けでもいただければ幸いです。ありがとうございました。