C# 如何从密码短语构建非对称密钥?

C# 如何从密码短语构建非对称密钥?,c#,encryption,C#,Encryption,我有很多客户,他们都有密码。对于他们的一些信息,我想确保只有他们才能阅读(甚至我们的开发人员、系统管理员或dba都不能) 所以我想到了这个主意: 在他们下次登录时,根据他们的密码构建一个公钥,并将其存储在数据库中 每次添加新信息时,请使用此公钥对其进行加密 当他们想要读取它时,根据他们刚刚输入的密码创建私钥并解密信息 我想我应该使用rfc2898derivebytes来创建我的密钥,但我不知道我应该在db中为我的公钥保存什么。你看过了吗?看起来您只需要密码、salt和迭代次数。您不会保存密码

我有很多客户,他们都有密码。对于他们的一些信息,我想确保只有他们才能阅读(甚至我们的开发人员、系统管理员或dba都不能)

所以我想到了这个主意:

  • 在他们下次登录时,根据他们的密码构建一个公钥,并将其存储在数据库中
  • 每次添加新信息时,请使用此公钥对其进行加密
  • 当他们想要读取它时,根据他们刚刚输入的密码创建私钥并解密信息

我想我应该使用rfc2898derivebytes来创建我的密钥,但我不知道我应该在db中为我的公钥保存什么。

你看过了吗?看起来您只需要密码、salt和迭代次数。您不会保存密码(无论如何也不会取消保存和更改),而是从用户处获取密码。看来你只需要节省盐和迭代次数在这个例子中,key
k1
和key
k2
是完全相同的,因为它们是由相同的密码、salt和迭代计数构建的。这个例子使用的是对称的三元组,我需要一个不对称的版本。我需要asymetric,因为我在写信息时没有suers密码。你会发现一些例子如何做到这一点。我想我将使用你链接中的另一个答案:生成2个rsa密钥,并使用符号算法保存加密的私钥。