Algorithm 围栏(之字形)密码数学表达式

Algorithm 围栏(之字形)密码数学表达式,algorithm,encryption,cryptography,Algorithm,Encryption,Cryptography,我正在研究围栏密码加密的实现。我当前(有效)的解决方案是: 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

我正在研究围栏密码加密的实现。我当前(有效)的解决方案是:

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;
}
公共静态字符串加密(整数高度,字符串明文)
{
List railFence=新列表();
对于(inti=0;i
但我的问题是,我想创建一个表达式,用于计算加密文本中给定位置的纯文本中的字符位置(以及栅栏高度和纯文本长度):

positionPlainText=expr(positionInEncryptedText,N,plainText.Length)

为了让事情更清楚一点,这个表达应该回答这个问题:

“嘿,表达式!我想把字符放在加密文本中的位置
X
,在纯文本中,我应该把字符放在哪个位置
Y
?”

我花了几个小时在纸和笔上,但我仍然无法创造出如此普遍的表达方式