代码之家  ›  专栏  ›  技术社区  ›  Cirdec

如何访问.NET用于ViewState签名和加密的基础库

  •  1
  • Cirdec  · 技术社区  · 16 年前

    我需要通过客户机线程状态,但只针对特定的GET请求(即链接)。因此,我不想将此状态添加到客户机的视图状态中,使其混乱不堪。状态需要加密。如何在machine.config中创建类似dictionary的新视图状态,并使用machine key中的密钥和设置对其进行加密?如果字典组件未公开,那么如何使用machine.config中的密钥加密/解密字符串。我不想添加更多必须在服务器场中复制的配置来复制现有功能。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Cirdec    16 年前

    可以通过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的实现来访问解密,尽管我不确定在哪里可以调用加密功能。

    推荐文章