Как я могу получить доступ к базовым библиотекам, которые .NET использует для подписи и шифрования ViewState - PullRequest
1 голос
/ 11 августа 2010

Мне нужно пропустить состояние через клиента, но только для определенных запросов get (или ссылок).Поэтому я не хочу добавлять это состояние в ViewState клиента, загромождая его.Государство должно быть зашифровано.Как я могу создать новый словарь, похожий на ViewState, и зашифровать его ключом и настройками из MachineKey в machine.config?Если компонент словаря не доступен, как я могу зашифровать / расшифровать строки, используя ключ из machine.config.Я не хочу добавлять больше конфигурации, которая должна быть реплицирована по всей нашей ферме серверов, чтобы дублировать существующие функции.

1 Ответ

0 голосов
/ 11 августа 2010

Конфигурация ключа машины доступна через System.Web.Configuration.MachineKeySection, который не имеет открытых методов, кроме конструктора и Reset.

Расшифровка строк обрабатывается следующим методом:

.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

Они оба частные;функциональность шифрования / дешифрования не раскрывается.Возможно получить доступ к расшифровке через реализации System.Web.IHttpHandler, создав HttpContext, хотя я не уверен, куда можно обратиться, чтобы вызвать функцию шифрования.

...