Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de .NET 11, los RSACryptoServiceProvider.Encrypt(Byte[], Boolean) métodos y RSACryptoServiceProvider.Decrypt(Byte[], Boolean) están obsoletos. Llamar a estos métodos en el código genera una advertencia SYSLIB0064 en tiempo de compilación.
Motivo de la obsolescencia
Cuando el fOAEP parámetro es true, estos métodos siempre usan SHA-1 como algoritmo de resumen para el relleno óptimo de cifrado asimétrico (OAEP). El algoritmo hash es implícito y no se puede cambiar. En su lugar, utilice sobrecargas que acepten un argumento explícito RSAEncryptionPadding. Estas sobrecargas hacen que el algoritmo hash sea explícito, proporcione más flexibilidad al elegir un algoritmo hash y le ayude a evitar el uso accidental de OAEP-SHA-1. Cuando requiera OAEP, prefiera RSAEncryptionPadding.OaepSHA256 o uno más seguro en lugar de migrar por defecto a RSAEncryptionPadding.OaepSHA1, a menos que precise SHA-1 para compatibilidad.
Solución alternativa
Reemplace las llamadas a las sobrecargas obsoletas por las sobrecargas correspondientes que aceptan un argumento RSAEncryptionPadding.
| Llamada obsoleta | Replacement |
|---|---|
Encrypt(data, fOAEP: true) |
Encrypt(data, RSAEncryptionPadding.OaepSHA1) |
Encrypt(data, fOAEP: false) |
Encrypt(data, RSAEncryptionPadding.Pkcs1) |
Decrypt(data, fOAEP: true) |
Decrypt(data, RSAEncryptionPadding.OaepSHA1) |
Decrypt(data, fOAEP: false) |
Decrypt(data, RSAEncryptionPadding.Pkcs1) |
Supresión de una advertencia
Si debe usar la API obsoleta, puede suprimir la advertencia en el código o en el archivo del proyecto.
Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y luego volver a habilitar la advertencia.
// Disable the warning.
#pragma warning disable SYSLIB0064
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0064
Para suprimir todas las advertencias SYSLIB0064 del proyecto, agregue una propiedad <NoWarn> al archivo del proyecto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0064</NoWarn>
</PropertyGroup>
</Project>
Para obtener más información, vea Suprimir advertencias.