将解密函数从Python转换为C#
我正在翻译我在互联网上找到的解密函数。该函数是用Python编写的,我正在将其转换为C#。我已经完成了相当多的工作(希望是正确的),但是有些语法我很难阅读 以下是原始函数:将解密函数从Python转换为C#,c#,python,encryption,C#,Python,Encryption,我正在翻译我在互联网上找到的解密函数。该函数是用Python编写的,我正在将其转换为C#。我已经完成了相当多的工作(希望是正确的),但是有些语法我很难阅读 以下是原始函数: def decrypt_signature(s): arr = list(s) arr[0], arr[52] = arr[52%len(arr)], arr[0] arr.reverse() arr = arr[3:] arr[0], arr[21] = arr[21%len(arr)], arr[
def decrypt_signature(s):
arr = list(s)
arr[0], arr[52] = arr[52%len(arr)], arr[0]
arr.reverse()
arr = arr[3:]
arr[0], arr[21] = arr[21%len(arr)], arr[0]
arr.reverse()
arr = arr[3:]
arr.reverse()
return "".join(arr)
到目前为止,我已经翻译了以下内容:
private string DecryptSig(string s)
{
//arr = list(s)
char[] arr = s.ToArray();
//arr[0], arr[52] = arr[52%len(arr)], arr[0]
var temp = arr[0];
arr[0] = arr[52 % arr.Length];
arr[52 % arr.Length] = temp;
//arr.reverse()
arr.Reverse();
//arr = arr[3:]
//?????????????????
//arr[0], arr[21] = arr[21 % len(arr)], arr[0]
temp = arr[0];
arr[0] = arr[21 % arr.Length];
arr[21 % arr.Length] = temp;
//arr.reverse()
arr.Reverse();
//arr = arr[3:]
//??????????????????
//arr.reverse()
arr.Reverse();
//return "".join(arr)
return "" + new string(arr);
}
作者在写arr=arr[3:]时做了什么?对我来说,它似乎只是获取数组的前三个值,然后将它们写回原始索引。他获取了除前三个之外的所有项。您可以使用C#LINQ等效程序,
Skip
:
arr = arr.Skip(3).ToArray();
在Python中,可以使用[startingIndex:EndingIndex]从列表中获取一些元素 arr[:]表示所有元素 arr[3:]的意思是跳过第三步,然后取下剩下的部分 正如乌里尔提到的,C#等价物是跳过(计数) arr=arr.Skip(3.ToArray() 您需要添加以下内容: 使用System.Linq
Python切片:它创建了一个包含元素3及以上的新列表。例如,
[1,2,3,4,5][3:][4,5]
这不是加密,只是奇怪的编码:没有密钥。