C# 如何访问.NET用于ViewState签名和加密的底层库

C# 如何访问.NET用于ViewState签名和加密的底层库,c#,.net,encryption,viewstate,machine.config,C#,.net,Encryption,Viewstate,Machine.config,我需要通过客户端执行线程状态,但仅针对特定的get请求(也称为链接)。因此,我不想将此状态添加到客户端的ViewState中,使其变得混乱。该状态需要加密。如何创建新的ViewState(如dictionary)并使用machine.config中MachineKey的密钥和设置对其进行加密?如果字典组件未公开,如何使用machine.config中的密钥加密/解密字符串。我不想添加更多必须在我们的服务器场中复制的配置来复制现有功能。可以通过System.Web.configuration.Ma

我需要通过客户端执行线程状态,但仅针对特定的get请求(也称为链接)。因此,我不想将此状态添加到客户端的ViewState中,使其变得混乱。该状态需要加密。如何创建新的ViewState(如dictionary)并使用machine.config中MachineKey的密钥和设置对其进行加密?如果字典组件未公开,如何使用machine.config中的密钥加密/解密字符串。我不想添加更多必须在我们的服务器场中复制的配置来复制现有功能。

可以通过System.Web.configuration.MachineKeySection访问机器密钥配置,该部分除了构造函数和重置之外没有任何公共方法

字符串的解密由以下方法处理:

.method assembly hidebysig static string 
    DecryptStringWithIV(string s,
                        valuetype System.Web.Configuration.IVType ivType) cil managed
哪个叫

.method assembly hidebysig static uint8[] 
    EncryptOrDecryptData(bool fEncrypt,
                         uint8[] buf,
                         uint8[] modifier,
                         int32 start,
                         int32 length,
                         bool useValidationSymAlgo,
                         bool useLegacyMode,
                         valuetype System.Web.Configuration.IVType ivType) cil managed

这些都是私人的;加密/解密功能未公开。通过构造一个HttpContext,可以通过System.Web.IHttpHandler的实现访问解密,尽管我不确定在哪里可以调用加密功能。

即使不亲自进行解密,我找不到在通用处理程序中访问此功能的方法:请参阅:直接访问此功能的唯一方法是通过反射。