Cifre las cookies en ASP.NET

Me gustaría cifrar las cookies en ASP.NET.

He seguido el método en este artículo , pero tiene el inconveniente de que utiliza la reflexión sobre un método interno. Esto ha provocado que se marque en una revisión del código; no es a prueba de futuro ya que la implementación interna puede cambiar.

¿Hay algún método con funcionalidad idéntica que no requiera el uso de encriptación en métodos internos?

Estoy usando .NET Framework 3.5 SP1 (Supongo que no puedo cambiar las versiones de framework)

¿Por qué no utilizar el cifrado que se encuentra en System.Security.Cryptography para cifrar y descifrar el nombre y el valor de la cookie cuando es confidencial? Puede escribir algunas funciones de utilidad para administrarlo con bastante facilidad. Ejemplo de funciones de utilidad:

private static void SetEncryptedCookie(string name, string value) { var encryptName = SomeEncryptionMethod(name); Response.Cookies[encryptName].Value = SomeEncryptionMethod(value); //set other cookie properties here, expiry &c. //Response.Cookies[encryptName].Expires = ... } private static string GetEncryptedCookie(string name) { //you'll want some checks/exception handling around this return SomeDecryptionMethod( Response.Cookies[SomeDecryptionMethod(name)].Value); } 

No necesita enrollar el suyo nunca más.

.Net 4.5 tiene MachineKey.Protect() y MachineKey.Unprotect() .

System.Web.Security.MachineKey

.Net 4.0 tiene MachineKey.Encode() y MachineKey.Decode() . Debería configurar MachineKeyProtection en ‘Todo’. Sin embargo, ahora están obsoletos y debe usar los más nuevos si tiene 4.5.

Tenga en cuenta que si prueba y usa estos en algo así como una aplicación de consola en lugar de ASP.Net, parece generar una nueva clave con cada reinicio de la aplicación. Solo lo comprobé rápidamente, pero en ILSpy parece que genera sus propios valores predeterminados si faltan las aplicaciones apropiadas.

No he podido encontrar un equivalente que no sea de ASP.Net.