Hola, chicos,
¡Buenas noches!
En esta publicación, demostraré cómo cifrar y descifrar contraseñas con CLR (C#). Para hacer esto, usaré los algoritmos de cifrado MD5CryptoServiceProvider y TripleDESCryptoServiceProvider de .NET Framework, que le permiten usar una palabra clave (Salt) para garantizar que esta clave se usará para cifrar los datos y solo se puede descifrar usando esta palabra clave secreta.
Si es nuevo en CLR y le gustaría saber más sobre esta poderosa característica de SQL Server, accede a este enlace.
Ver código fuenteEjemplos de uso
Cifrar datos

Descifrando datos

Esta implementación no forma parte de los algoritmos criptográficos validados FIPS de la plataforma Windows.
Si compiló su ensamblado CLR en un servidor que ejecuta Windows Server, probablemente encontrará este mensaje de error al intentar ejecutar estas dos funciones en la publicación.
Mensaje 6522, Nivel 16, Estado 1, Línea 6
Se produjo un error de .NET Framework durante la ejecución de la rutina definida por el usuario o del agregado “fncCriptografa_String”:
System.InvalidOperationException: esta implementación no forma parte de los algoritmos criptográficos validados FIPS de la plataforma Windows.
System.InvalidOperationException:
en System.Security.Cryptography.MD5CryptoServiceProvider..ctor()
en Bibliotecas.Model.Utils.CreateDES(Clave de cadena)
en UserDefinedFunctions.fncCriptografa_String(SqlString Ds_Password)
Esto ocurre porque los algoritmos utilizados (MD5CryptoServiceProvider y TripleDESCryptoServiceProvider) no cumplen con el estándar FIPS de Microsoft.
Este problema es similar al que informé en la publicación. Servicios de informes de SQL Server: informe de error al guardar: System.InvalidOperationException Esta implementación no forma parte de los algoritmos criptográficos validados FIPS de la plataforma Windows., pero usaré una solución diferente para este caso.
Para que puedas utilizar estas funciones en tu servidor, te presentaré dos soluciones para solucionar este problema:
Opción 1: deshabilitar FIPS
Para deshabilitar esta configuración, simplemente acceda al registro de Windows, busque la configuración "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy" y cambie el valor de la clave "Enabled" a 0.

Después de eso, reinicie el servicio SQL Server y podrá utilizar estas funciones normalmente.
Opción 2: cambiar el archivo sqlservr.exe.config de SQL Server
Una forma de resolver este problema sin tener que deshabilitar esta política de seguridad (si está habilitada, el analista de seguridad de su empresa probablemente piense que es una buena opción) es cambiar el archivo sqlservr.exe.config, generalmente ubicado en C:\Archivos de programa\Microsoft SQL Server\MSSQL12.Nombre_de_su_instancia\MSSQL\Binn y agregue la siguiente configuración al final del archivo, dentro de la sesión
<enforceFIPSPolicy enabled="0" />
Su archivo debería verse así:

Después de cambiar el archivo, reinicie el servicio SQL Server. Este cambio deberá realizarse en todos los casos en los que utilice esta función.
Otra alternativa es realizar este cambio en el máquina.config de la máquina (generalmente ubicado en C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config), pero tenga en cuenta que al usar esta solución, deshabilitará esta opción para TODAS las aplicaciones .NET en el servidor.
Algoritmos de cifrado compatibles y no compatibles
Consulte también la lista siguiente para identificar qué algoritmos son compatibles y cuáles no con el espacio de nombres "System.Security.Cryptography":
Algoritmos hash
– HMACSHA1
– MACTripleDES
– Proveedor de servicios criptográficos SHA1
Algoritmos simétricos (Utilice la misma clave para cifrar y descifrar)
– DESCryptoServiceProvider
– TripleDESCryptoServiceProvider
Algoritmos asimétricos (Utilice una clave pública para cifrar y una clave privada para descifrar)
– DSACryptoServiceProvider
– RSACryptoServiceProvider
Algoritmos que no soportan los estándares FIPS (y no debe usarse)
– HMACMD5
– HMACRIPEMD160
– HMACSHA256
– HMACSHA384
– HMACSHA512
– MD5CryptoServiceProvider
– Proveedor de servicios RC2Crypto
– RijndaelGestionado
– RIPEMD160Administrado
– SHA1Administrado
¡Eso es todo, amigos!
Espero que te haya gustado el post.
Un abrazo y hasta la próxima.
Comentários (0)
Carregando comentários…