Parse cipher name (name like 'aes_256_cbc' or 'AES-128-CTR'). Also this method validates If the
		cipher is supported by this class. If no - exception is raised

		:param name: name to parse

		:return: tuple where the first element is a key size in bytes (int) and the second element - block cipher mode
		of operation (str) (for example: (16, 'AES-CTR') or (24, 'AES-CBC'))

def parse_cipher_name(cls, name):
		""" Parse cipher name (name like 'aes_256_cbc' or 'AES-128-CTR'). Also this method validates If the
		cipher is supported by this class. If no - exception is raised

		:param name: name to parse

		:return: tuple where the first element is a key size in bytes (int) and the second element - block cipher mode
		of operation (str) (for example: (16, 'AES-CTR') or (24, 'AES-CBC'))
		"""
		r = cls.__mode_re__.match(name.upper())
		if r is None:
			raise ValueError('Unable to find suitable cipher for: "%s"' % name)
		key_size = int(int(r.group(2)) / 8)
		block_mode = 'AES-%s' % r.group(4)
		if key_size not in cls.__valid_key_sizes__:
			raise ValueError('Unsupported secret length: "%i"' % key_size)
		if block_mode not in cls.__modes_descriptor__.keys():
			raise ValueError('Unsupported block cipher mode of operation: "%s"' % block_mode)
		return key_size, block_mode