我需要加密ASP.NET之外的cookie(Console App,Powershell等),但由于这个cookie最终会被我的MVC应用程序读取,因此需要使用相同的密钥进行加密。
我可以使用ASP.NET之外的MachineKey class但是我无法指定加密类型或密钥,因为这些在应用程序的web.config中没有列出。存在于这种背景下。由于没有配置,因此每次都会随机生成密钥。
如何使用下面相同的解密密钥加密数据,以保证以后我的MVC应用程序能够成功解密?
<machineKey
validationKey="207FE3B8E01D0FF81871D7F3EFC082A14341A7820942D24D3BEF8954CAE53D860F46FBCDDA73F752CE1052D475D442CC8C14FC814739A757D52D152EF5EE179E"
decryptionKey="326C47E59EB1B38AEA84DBC9633BB770C318A740E477C82F3A8D9506F030D953"
validation="SHA1" decryption="AES"
/>
答案 0 :(得分:6)
一些可能的想法。
抓住钥匙基本上是:
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MachineKeySection configSection = (MachineKeySection)config.GetSection("system.web/machineKey");
然后,只需使用正确的方法来加密cookie。请记住,某些ASP.NET成员资格提供程序会将其他数据序列化到cookie中,因此根据您使用的数据,这可能无法实现。此外,如果您的应用使用Cookie的UserData部分,那么这可能会破坏它。