Compartilhar via


Mapeando nomes de algoritmo para classes de criptografia

Existem quatro maneiras de que um desenvolvedor pode criar um objeto de criptografia usando o Windows Software Development Kit (SDK):

  • Criar um objeto usando o novo operador.

  • Criar um objeto que implementa um algoritmo de criptografia específica, chamando o Criar método na classe abstrata para esse algoritmo.

  • Criar um objeto que implementa um algoritmo de criptografia específica, chamando o sistema.segurança.Cryptography.CryptoConfig.CreateFromName método.

  • Criar um objeto que implementa uma classe de algoritmos criptográficos (sistema autônomo uma codificação de bloco simétrico) chamando o Criar método na classe abstrata para esse tipo de algoritmo (por exemplo, SymmetricAlgorithm).

Por exemplo, suponha que um desenvolvedor deseja calcular o hash SHA1 de um conjunto de bytes.The System.Security.Cryptography namespace contém duas implementações o algoritmo SHA1, uma implementação totalmente gerenciada e outra que empacota CryptoAPI. O desenvolvedor pode optar por criar uma instância de uma implementação específica do SHA1 (sistema autônomo a Classe SHA1Managed) chamando o novo operador.No entanto, se não importa qual classe o Common linguagem tempo de execução cargas, desde que a classe implementa o algoritmo de hash SHA1, o desenvolvedor pode criar um objeto, chamando o sistema.segurança.criptografia.SHA1.Create método.Este método chama sistema.segurança.criptografia.CryptoConfig.CreateFromName("sistema.segurança.criptografia.SHA1"), que deve retornar uma implementação do algoritmo de hash SHA1.

O desenvolvedor também pode telefonar sistema.segurança.Cryptography.CryptoConfig.CreateFromName("SHA1") porque, por padrão, a configuração de criptografia inclui nomes curtos para algoritmos enviados no .NET estrutura.

Se não importa qual algoritmo de hash é usado, o desenvolvedor pode chamar o sistema.segurança.criptografia.HashAlgorithm.criar método, que retorna um objeto que implementa uma transformação de hash.

Mapeando nomes do algoritmo em arquivos de configuração

Por padrão, o tempo de execução retorna um Classe sistema.segurança.criptografia.SHA1CryptoServiceProvider objeto para todos os quatro cenários.No entanto, um administrador da computador pode alterar o tipo de objeto que os métodos nos últimos dois cenários retornam.Para fazer isso, você deve MAP um nome amigável do algoritmo para a classe que você deseja usar no arquivo de configuração do computador (Machine.config).

O exemplo a seguir mostra como configurar o tempo de execução, que sistema.segurança.criptografia.SHA1.criar, sistema.segurança.CryptoConfig.CreateFromName("SHA1"), and sistema.segurança.criptografia.HashAlgorithm.criar return a MySHA1HashClass objeto.

<configuration>
   <!-- Other configuration settings. -->
   <mscorlib>
      <cryptographySettings>
         <cryptoNameMapping>
            <cryptoClasses>
               <cryptoClass MySHA1Hash="MySHA1HashClass, MyAssembly
                  Culture='en', PublicKeyToken=a5d015c7d5a0b012,
                  Version=1.0.0.0"/>
            </cryptoClasses>
            <nameEntry name="SHA1" class="MySHA1Hash"/>
            <nameEntry name="System.Security.Cryptography.SHA1"
                       class="MySHA1Hash"/>
            <nameEntry name="System.Security.Cryptography.HashAlgorithm"
                       class="MySHA1Hash"/>
         </cryptoNameMapping>
      </cryptographySettings>
   </mscorlib>
</configuration>

Você pode especificar o nome do atributo no elemento <cryptoclass> (o exemplo anterior nomeia o atributo MySHA1Hash). O valor do atributo no <cryptoclass> elemento é uma seqüência de caracteres que o common linguagem tempo de execução usa para encontrar a classe.Você pode usar qualquer seqüência atenda aos requisitos especificados em Especificando nomes de tipos totalmente qualificados.

Muitos nomes de algoritmo podem mapear para a mesma classe.The elemento <nameentry> mapeia uma classe para um nome amigável do algoritmo.The nome atributo pode ser uma seqüência que é usada quando chamar o sistema.segurança.Cryptography.CryptoConfig.CreateFromName método ou o nome de uma classe abstrata criptografia no System.Security.Cryptography espaço para nome. O valor de classe atributo é o nome do atributo no <cryptoclass> elemento.

Observação:

Você pode obter um algoritmo SHA1 chamando o sistema.segurança.criptografia.SHA1.criar or the segurança.CryptoConfig.CreateFromName("SHA1") método.Cada método garante apenas que ele retorna um objeto que implementa o algoritmo SHA1.Você não tem MAP cada nome amigável de um algoritmo para a mesma classe no arquivo de configuração.

Para obter uma lista de nomes padrão e as classes que mapeiam para, consulte Classe CryptoConfig.

Consulte também

Outros recursos

Serviços de criptografia

Configurando classes de criptografia