public static string GenerateVerhoeff(string num)
        {
            int index1 = 0;

            int[] reversedIntArray = Verhoeff.StringToReversedIntArray(num);
            for (int index2 = 0; index2 < reversedIntArray.Length; ++index2)
            {
                index1 = Verhoeff.d[index1, Verhoeff.p[(index2 + 1) % 8, reversedIntArray[index2]]];
            }
            return(Verhoeff.inv[index1].ToString());
        }
        public static bool ValidateVerhoeff(string num)
        {
            int index1 = 0;

            int[] reversedIntArray = Verhoeff.StringToReversedIntArray(num);
            for (int index2 = 0; index2 < reversedIntArray.Length; ++index2)
            {
                index1 = Verhoeff.d[index1, Verhoeff.p[index2 % 8, reversedIntArray[index2]]];
            }
            return(index1 == 0);
        }