gpt4 book ai didi

.net - 使用用户提供的密码加密和解密字符串的简单方法在 native Win32 和 .NET 中都有效?

转载 作者:可可西里 更新时间:2023-11-01 10:49:45 31 4
gpt4 key购买 nike

我有一个 native Win32 客户端应用程序和一个 .NET 网络应用程序。我希望能够在客户端上加密一个字符串(给定用户提供的密码),并能够在给定相同密码的情况下在服务器上解密这个字符串。我的客户端应用程序是 32 位的,而我的 .NET Web 应用程序是 64 位的。在客户端上,我无法部署 .NET 框架。

我需要一个简单而强大的解决方案。简单来说,我的意思是我更喜欢单个函数调用。所谓稳健,我的意思是我想要像 AES 这样的行业标准加密算法,而且我不希望内存泄漏。

关于我如何以简单而可靠的方式完成此任务有什么建议吗?

(也许是 32 位和 64 位版本的 DLL?我的 .NET Web 应用程序可以 P/Invoke 到它,而我的 native 应用程序可以直接使用它。)

最佳答案

恐怕没有“魔术”功能可以为您的服务器和客户端执行此操作。编写一个适用于两者的简单加密/解密方案并不难,因为算法是标准的。构建您自己的也将帮助您了解加密和解密在您的软件中是如何工作的。

对于 .NET,您可以使用 System.Security.Cryptography 命名空间,对于 Win32,您应该使用 CryptoAPI .

至于加密方案,根据您的用例,您可以使用简单的对称加密方案。

加密:

  1. 将用户密码与常量 salt 一起散列以创建 32 位缓冲区。您可以为此使用 SHA256。 CryptoAPI SHA256 仅支持 XP SP3 及更高版本。否则,您可以在线找到许多开源实现。
  2. 将前 16 个字节作为 key ,将最后 16 个字节作为 IV。
  3. 使用AES CryptoProvider在 CryptoAPI 中使用 key 和 IV 进行加密。

解密:

  1. 和 2. 将与加密相同。 .NET 内置了 SHA256 的类你可以用这个。执行这些步骤应该会为您提供与加密期间相同的 key 。
  2. 使用AesCryptoServiceProvider使用 key 和 IV 解密数据的类。请参阅此处的示例:https://gist.github.com/1833986 (这个不使用任何盐)。

关于.net - 使用用户提供的密码加密和解密字符串的简单方法在 native Win32 和 .NET 中都有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9268952/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com