列表保持相同的第一个值,即使值发生变化

List keeps getting same first value, even though value changes

我正在编写加密代码,更具体地说:
我目前正在写一个加密字母然后解密它们的检查,以查看它们是否可以,然后将解密的输出与初始输入进行比较。
我检查这个是因为解密公式使用 cos^-1 不能使用值。

不幸的是,字母 (a=1, b=2, z=26, etc) 的整数列表不断添加相同的第一个值,即使值发生变化。

部分代码:

foreach(int x in LetInt) {
    DoubInt++;

    try {
        CheckLetInt.Add(Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
        Console.WriteLine("Correct number:" + Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
        Console.WriteLine("List content:" + CheckLetInt[DoubInt - 1]);
        CheckLetter.Add(LetPos[Convert.ToInt64(CheckLetInt[DoubInt - 1]) - 1]);
    } catch(Exception) {
        ValueError.Visible = true;
        ClearAll();
        Console.WriteLine("Caught.");
    }
}

输出:

有人知道发生了什么事吗?
"Correct Number" 和 "List Content" 公式是一样的。

Link to the project (it's a program so the code by itself doesn't work)

Link to the code by itself

稍后在循环中执行:

if(string.Join("", CheckLetter) == string.Join("", Letters.ToArray())) {
     ...
} else {
     ClearAll();
}

您永远不会在循环中修改 Letters,但您会修改 CheckLetter,因此这将主要 return 错误,调用 ClearAll() 方法。

在 ClearAll() 中,您将 DoubInt 设置回零 - 因此始终显示第一个条目

        DoubInt = 0;

请注意,这不是 'encrypt' 任何事情的好方法。如果你只是在玩,那没关系,但如果你想学习密码学,如果你认为这是 'encryption'

,你应该先阅读相同的基础知识