private static int[] generateWorkingKey(byte[] userKey) { if (userKey.Length != 32) { throw new ArgumentException("Key length invalid. Key needs to be 32 byte - 256 bit!!!"); } int[] array = new int[8]; for (int num = 0; num != 8; num++) { array[num] = Gost28147Mac.bytesToint(userKey, num * 4); } return(array); }
private void gost28147MacFunc(int[] workingKey, byte[] input, int inOff, byte[] output, int outOff) { int num = Gost28147Mac.bytesToint(input, inOff); int num2 = Gost28147Mac.bytesToint(input, inOff + 4); for (int i = 0; i < 2; i++) { for (int j = 0; j < 8; j++) { int num3 = num; num = (num2 ^ this.gost28147_mainStep(num, workingKey[j])); num2 = num3; } } Gost28147Mac.intTobytes(num, output, outOff); Gost28147Mac.intTobytes(num2, output, outOff + 4); }