是否可以在.NET Core Data Protection中设置密钥?

时间:2018-06-02 09:18:31

标签: asp.net-core .net-core asp.net-membership membership-provider

或者编辑商店以引入特定密钥?

我的目标是从使用成员资格提供程序的旧版ASP.NET Webforms站点设置密钥。因此,它在web.config中有一个MachineKey元素,其中指定了ValidationKey。

如果我可以在.NET Core Data Protection中设置此密钥,我相信我可以使用类似于此处给出的示例的代码实现密码哈希:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing?view=aspnetcore-2.1。使用正确的密钥集,我应该能够生成与遗留站点匹配的哈希值。

但似乎数据保护的整个理念是它为您自动设置密钥,而您应该与它们无关。有办法解决这个问题吗?

编辑:

在ASP.NET WebForms中,使用成员资格提供程序来为用户散列密码,我在web.config中有以下条目:

<system.web>
    <machineKey validationKey="*********" 
          decryptionKey="*********" 
          validation="HMACSHA256" 
          decryption="AES" />
</system.web>

当密码被散列时,“validationKey”属性中的值参与散列,不是吗?如果validationKey不同,那么给定相同的密码/ salt组合,产生的哈希会有所不同吗?或者这是我出错的地方?

如果以上是正确的,那么我的问题是,我如何在ASP.NET Core中使用相同的键值,这样当我使用相同的密码/ salt组合进行哈希时,我生成的哈希值与我在遗留数据库?如何为.NET Core提供validationKey值以进行哈希?或者它甚至没有参与?

0 个答案:

没有答案