3

C#でのプログラミング。
文字列内のすべての文字を別の文字(暗号化)に置き換えようとしていますが、助けが必要です。私は2つの配列を使用してこれを行うつもりでしたが、1つはアルファベットを含み、もう1つは代替値を含みますが、アルファベット全体のサイズがそうでない場合は、他のことを行う必要があることに気付きました。本当に時間があります。もっと簡単で速い方法があるかどうか知りたいのですが。これは私が今まで持っているものです

private string EncryptFn(string Sinput)
{
    string STencryptedResult = "Null for now";
    char[] CAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
    char[] Encrypt = "QWERTYUIOPASDFGHJKLZXCVBNM".ToCharArray();

    return STencryptedResult;
}

ありがとう

4

3 に答える 3

6

辞書を使用できます:

var map = new Dictionary<char,char> {
  { 'A', 'Q' },
  { 'B', 'W' },
  // etc
};

次に、各文字を次のようにマッピングするのが非常に簡単になります。

var result = new StringBuilder();
foreach( var fromChar in inputString ) {
  char toChar;
  if( ! map.TryGetValue(fromChar, out toChar) ) {
    // Do something with missing char
  }
  result.Append(toChar);
}
于 2012-12-12T04:38:20.940 に答える
5

これは非常に強力な暗号化ではありませんが、次のバージョンは非常に効率的であり、暗号化を定義するために必要なデータはほとんどありません。

private string EncryptFn(string Sinput)
{
    string coding = "QWERTYUIOPASDFGHJKLZXCVBNM";

    StringBuilder result = new StringBuilder();
    foreach (char c in Sinput)
    {
        int index = (Char.ToUpper(c) - 'A');
        if (index >= 0 && index < coding.Length)
            result.Append(coding[index]);
        else
            result.Append(c);
    }
    return result.ToString();
}
于 2012-12-12T04:39:16.180 に答える
0

BitWise 操作を考慮すると、データの暗号化と復号化に最適です。以下を参照してください。

バイト配列暗号化

于 2012-12-12T04:40:23.110 に答える