我正在开发Rail Fence Cipher加密实现。我目前的(有效)解决方案是:
public static string Encrypt(int height, string plainText)
{
List<string> railFence = new List<string>();
for (int i = 0; i < height; i++) railFence.Add("");
int pos = 0, inc = 1;
foreach (char c in plainText)
{
if (pos + inc == height)
inc = -1;
else if (pos + inc == -1)
inc = 1;
railFence[pos] += c;
pos += inc;
}
string encryptedtext = "";
foreach (string s in railFence)
encryptedtext += s;
return encryptedtext;
}
但我的问题是我想创建一个表达式,它将以纯文本计算加密文本中给定位置的字符位置(以及围栏高度和纯文本长度):
positionPlainText = expr(positionInEncryptedText, N, plainText.Length)
为了使事情更清楚一点,这个表达式应该回答这个问题:
“嘿表达!我希望将字符放在加密文本中的X
位置,将Y
的位置放在纯文本中我应该把角色放在那里吗?”
我花了几个小时用笔和纸,我仍然无法创造这样的普遍表达。