我有一个原生的Win32客户端应用程序和一个.NET Web应用程序。我希望能够加密客户端上的字符串(给定用户提供的密码),并且能够在给定相同密码的服务器上解密此字符串。我的客户端应用程序是32位,我的.NET Web应用程序是64位。在客户端上,我无法部署.NET框架。
我需要一个简单而强大的解决方案。简单来说,我的意思是我更喜欢单个函数调用。通过健壮,我的意思是我想要像AES那样的行业标准加密算法,我不希望内存泄漏。
关于如何以简单而强大的方式实现这一目标的任何建议?
(也许是一个32位和64位版本的DLL?我的.NET Web应用程序可以P / Invoke到它,我的本机应用程序可以使用它。)
答案 0 :(得分:0)
您应该使用Microsoft的Cryptography API。 MSDN文档启动here
这使用crypt32.dll,与.NET中的System.Security.Cryptography API封面下使用的DLL相同。 (您可以向IL反汇编程序检查它已经在该DLL上进行了P / Invoke。)
答案 1 :(得分:0)
我担心没有“魔法”功能可以为您的服务器和客户端执行此操作。编写一个简单的加密/解密方案并不难,因为这些算法都是标准的。构建自己的内容还可以帮助您了解加密和解密在软件中的工作原理。
对于.NET,您可以使用System.Security.Cryptography命名空间,对于Win32,您应该使用CryptoAPI。
对于加密方案,根据您的用例,您可以使用简单的对称加密方案。
加密:
解密:
答案 2 :(得分:0)
可以是用户的登录密码而不是他们直接提供的密码吗? Windows支持在用户登录凭据下强大地加密数据(这通常是密码,但可以是智能卡)。与Active Directory一起使用时,甚至可以配置密码恢复选项。
这称为Data Protection API。它可以通过本地代码通过记录here的调用和本地代码通过调用here
访问