У меня есть быстрое небольшое приложение, которое перебирает возможные методы симметричного шифрования. Я получаю их со следующей строкой:
private static List<Type> GetAlgorithmTypes
{
get { return Assembly.GetAssembly(typeof(SymmetricAlgorithm)).GetTypes().Where( type => type.IsSubclassOf(typeof(SymmetricAlgorithm))).ToList(); }
}
Как вы можете видеть, когда я запускаю это, AesCryptoServiceProvider не является членом этой группы, хотя он наследует от AES, который принадлежит SymmetricAlgorithm и отображается в моем списке. Это не будет большой проблемой, я могу вручную добавить провайдера в группу, если он у меня есть, но затем, если я попытаюсь получить этот тип по его имени:
Type t = Type.GetType("System.Security.Cryptography.AesCryptoServiceProvider");
Я получаю нулевой объект для AesCryptoServiceProvider, но не для других элементов в группе.
Это действительно странно, и мне интересно, есть ли у кого-нибудь идеи. Из-за этого мне нужно использовать tripleDES (поскольку все мои машины работают в соответствии с требованиями соответствия FIPS).
Спасибо за любую помощь!