internal Base64Encoding(char[] alphabet, char padding, string encodingName, bool verify) { if (verify) { if (alphabet == null) { throw new ArgumentNullException("alphabet", "alphabet is null"); } if (encodingName == null) { throw new ArgumentNullException("encodingName", "encodingName is null"); } if (alphabet.Length != 64) { throw new ArgumentOutOfRangeException("alphabet", "size of alphabet is not 64"); } if (ArrayFunctions.IsArrayDuplicate(alphabet)) { throw new ArgumentException("alphabet", "alphabet contains duplicated items"); } if (ArrayFunctions.IsArrayContains(alphabet, padding)) { throw new ArgumentException("padding", "padding already existed in alphabet"); } } this.alphabet = (char[])alphabet.Clone(); this.padding = padding; this.encodingName = encodingName; this.InitAlgorithm(this.alphabet, this.padding); }