私は文字列を暗号化し、シーザアルゴリズムを使用して を復号化するWindowsフォームアプリケーションを持っています。文字列を暗号化するときには、スペースを削除する必要がありますが、再度解読するときは、削除したスペースを実際の場所に戻す必要があります。文字列から削除されたスペースを戻す方法
私はこのケースで直面した問題は、暗号化された文字列から削除された空間をもたらすとも一部の文字がある復号化する際には、暗号化キーは3である。このパターンなどの特殊文字に変更されている。
プレーンテキスト:私の名前はShafaqザヒールはある
暗号化されたテキスト:PbqdphlvVkdidtCdklu
復号文:M_nameisShafaq @これが私のコードである
アアー
class CaesarAlgorithm
{
public string Encrypt(string pt,int key)
{
char[] buffer = pt.Replace(" ",string.Empty).ToCharArray();
//char[] buffer = pt.ToCharArray();
for(int i=0;i<buffer.Length;i++)
{
if (buffer[i] >= 'a' && buffer[i] <= 'z')
{
buffer[i] = (char)(buffer[i] + key);
if (buffer[i] > 'z')
{
buffer[i] = (char)(buffer[i] - 26);
}
}
else if (buffer[i] >= 'A' && buffer[i] <= 'Z')
{
buffer[i] = (char)(buffer[i] + key);
if (buffer[i] > 'Z')
{
buffer[i] = (char)(buffer[i] - 26);
}
}
}
return new string (buffer);
}
public string Decrypt(string pt,int key)
{
char[] buffer = pt.ToCharArray();
for (int i = 0; i < buffer.Length; i++)
{
if (buffer[i] >= 'a' && buffer[i] <= 'z')
{
buffer[i] = (char)(buffer[i] - key);
if (buffer[i] > 'z')
{
buffer[i] = (char)(buffer[i] - 26);
}
}
else if (buffer[i] >= 'A' && buffer[i] <= 'Z')
{
buffer[i] = (char)(buffer[i] - key);
if (buffer[i] > 'Z')
{
buffer[i] = (char)(buffer[i] - 26);
}
}
}
return new string(buffer);
}
}
}
私はあなたの機能が「ObfuscateAndDestruct」と「PartiallyReconstructWithFaults」と呼ばれる方が良いと思います。自分で暗号化を試みることは絶対にやめてください。初心者のミスをしなくてもうまくいくライブラリを常に見つけてください。 –