3

用 C# 编程。
我正在尝试用另一个字符(加密)替换字符串中的每个字符,但我需要一些帮助。我打算使用两个数组来做到这一点,一个是字母表,另一个是替换值,但我意识到我必须做一个 else-if 整个字母表的大小,我没有真的有时间。我想知道是否有更简单、更快捷的方法。这是我到目前为止所拥有的

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 回答