Failed to check data error using machine key installed in SHA1

I have a simple .net application using the .NET 2.0 runtime in IIS 7.5, where I changed the machine key in the web.config file to use the following:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1"/> 

This works fine locally, but when I publish on the server, I get "HttpException (0x80004005):" Unable to validate data "every time I browse the site. I tried to set debug =" false "compilation. Setting the validation method to 3DES fixes this problem, but we have a requirement to work with SHA1. Is there some kind of configuration that I'm missing here? see stack trace below.

  [HttpException (0x80004005): Unable to validate data.]
    System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (Boolean fEncrypt, Byte [] buf, Byte [] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData) +1008
    System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (Boolean fEncrypt, Byte [] buf, Byte [] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) +91
    System.Web.UI.Page.EncryptStringWithIV (String s, IVType ivType) +83
    System.Web.UI.Page.EncryptString (String s) +30
    System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl (List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +1497
    System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl (List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +1148
    System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl (Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +152
    System.Web.Handlers.ScriptResourceHandler.GetScriptResourceUrl (Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +37
    System.Web.UI.ScriptManager.GetScriptResourceUrl (String resourceName, Assembly assembly) +105
    System.Web.UI.ScriptRegistrationManager.RegisterClientScriptResource (Control control, Type type, String resourceName) +113
    System.Web.UI.ScriptManager.System.Web.UI.IScriptManager.RegisterClientScriptResource (Control control, Type type, String resourceName) +14
    System.Web.UI.ClientScriptManager.RegisterClientScriptResource (Control control, Type type, String resourceName) +53
    System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e, Boolean registerScript) +113
    System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e) +25
    System.Web.UI.Control.PreRenderRecursiveInternal () +80
    System.Web.UI.Control.PreRenderRecursiveInternal () +171
    System.Web.UI.Control.PreRenderRecursiveInternal () +171
    System.Web.UI.Control.PreRenderRecursiveInternal () +171
    System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

+6
source share
2 answers

I found that when the local security policy for "System Cryptography: use fips compatible algorithms for encryption, hashing and signing" (security settings β†’ local policies β†’ securityOptions) is set to true, Sha1 will not function, which is the reason, by which I get an error in this case.

+2
source

Are you running the application in a genuine .NET 2.0 application? (I ask because you are using IIS 7.5).

If not, remember that there have been changes to the encryption algorithms in the .NET 4.5 framework.

If you need to be compatible with the <.NET 4.5 Framework you will need a compatibility tag:

 <machineKey compatibilityMode="Framework20SP1" /> 

See http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx or http://blogs.msdn.com/b/webdev/archive/2012/10/ 23 / cryptographic-improvements-in-asp-net-4-5-pt-2.aspx for details.

+4
source

Source: https://habr.com/ru/post/956095/


All Articles