【问题标题】:AES Encrypt and decrypt in nuget packagenuget包中的AES加密和解密
【发布时间】:2019-03-06 18:44:02
【问题描述】:

我需要创建一个 NuGet 包,它为纯文本提供加密和解密。 所以我创建了一个示例类,它有 2 种加密和解密方法,并对输入字符串进行硬编码,并使用随机数生成器生成密钥和 IV。

我的问题是,如果我用这个类文件创建包,客户端应用程序如何知道密钥?

客户端应用程序将发送输入字符串,并且我的 NuGet 包应该加密将 base64 编码的字符串发送到客户端应用程序,并且客户端应用程序必须具有相同的密钥才能解密该文本。我对如何共享密钥有点困惑。

请帮忙。

【问题讨论】:

  • 可能是你误解了软件包的概念。因为你的问题没有意义。
  • 投票范围太广。如何执行密钥管理本身就是一个主题,如果它是主题,它会在 security.stackexchange.com 上讨论,而不是在这里。
  • 你的包没有问题 - 加密和解密都应该以密钥作为参数。它可以提供一个 GenerateKey()。问题是客户端应该如何/在哪里存储密钥。

标签: c# asp.net encryption cryptography nuget-package


【解决方案1】:

最好不要对密钥进行硬编码,而是允许对其进行配置。您可以将其添加为参数来加密和解密方法。此外,您可以添加使用 Secure PRNG 生成密钥的方法。

对一代要非常小心。普通的随机数生成器不足以保证安全,因为它太可预测了。您的问题尚不清楚您使用的是哪个,但您可以在question 中阅读更多详细信息。

生成密钥后,最好通过配置或类似的方式将其提供给您的所有应用程序。 .NET 有一种在 web.config 中配置安全存储的非常笨拙的方法,但这是可以做到的。或者,您可以找到您选择的安全存储,例如Azure KeyVault 或类似的东西。

【讨论】:

  • 可能我的问题不清楚,我有一个单独的函数来使用密码随机生成器生成密钥,我的加密/解密方法有参数 1.data、2.key、3.iv。但是我从 Main() 调用 randomnumber 方法并将密钥传递给这些函数,我从 Main() 调用这些加密/解密函数并从 Main() 传递所有值,所以如果客户端应用程序使用我的 nuget 包,他们如何传递密钥,因为我的代码中有随机数生成器..
  • 您需要生成密钥和 IV 并以某种方式存储它们,以便它们可以被两个应用程序重用。我不是 100% 确定我现在完全理解你的问题。
猜你喜欢
  • 2015-01-20
  • 2014-01-05
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 2012-02-24
相关资源
最近更新 更多