/// <summary> /// 构造函数 /// </summary> public DESAlgorithm() { // 初始化轮函数 RoundFunction = new DESRoundFunction( DESData.RawSBox.Select(array => new SubstitutionBox(array, 4)).ToArray(), new Permutator(DESData.EMatrix), new Permutator(DESData.PBox) ); // 初始化各种置换函数 KeyIP = new Permutator(DESData.InitialKeyPermutation); DataIP = new Permutator(DESData.InitialDataPermutation); SubKeyPC = new Permutator(DESData.SubKeyPC); DataIPRev = DataIP.GetInversePermutator(); // 初始化左移位数 ShiftArray = DESData.KeyShiftArray.Clone() as int[]; roundCount = ShiftArray.Length; }