C# 在WPF应用程序中保存加密密钥

C# 在WPF应用程序中保存加密密钥,c#,wpf,encryption,C#,Wpf,Encryption,我们正在使用WPF创建一个应用程序,我们的客户将使用该应用程序进行计算。 我们需要某些数据才能进行计算。客户端不应访问此数据。这些数据可以存储在XML文件中。 我们还希望能够控制谁使用该应用程序。我们计划通过一个许可文件来实现这一点,该文件指定应用程序可以使用多长时间。 我们想用数据和许可证文件对文件进行加密,以便用户无法打开它们 我的问题是我需要将加密密钥存储在某个地方。 当我将这个密钥硬编码到应用程序中时,可以通过反编译发现它。 是否可以在用户无法访问的情况下将加密保存到某个位置?我在哪里可

我们正在使用WPF创建一个应用程序,我们的客户将使用该应用程序进行计算。 我们需要某些数据才能进行计算。客户端不应访问此数据。这些数据可以存储在XML文件中。 我们还希望能够控制谁使用该应用程序。我们计划通过一个许可文件来实现这一点,该文件指定应用程序可以使用多长时间。 我们想用数据和许可证文件对文件进行加密,以便用户无法打开它们

我的问题是我需要将加密密钥存储在某个地方。 当我将这个密钥硬编码到应用程序中时,可以通过反编译发现它。 是否可以在用户无法访问的情况下将加密保存到某个位置?我在哪里可以保存这把钥匙?
是否存在一些库来实现这一点?

您可以使用模糊处理来防止代码被反向工程。请从MSDN中检查此项

您可以使用模糊处理来防止代码被反向工程。请从MSDN中检查此项

检查许可项目。

检查许可项目。

您仍然可以将密钥存储在远程服务器/网站上


或者,您可以使用Litecode将整个方法移动到服务器端

您仍然可以将密钥存储在远程服务器/网站上


或者,您可以使用Litecode将整个方法移动到服务器端

如果所有数据都在客户机上,并且没有任何来自服务器的验证,那么总是有办法破解客户机应用程序。相反,您应该创建一个进行计算的服务,wpf应用程序只是一个访问服务器的瘦客户机,在每个请求中,如果客户机仍然可以访问该服务,则会提供并验证客户机许可证。

如果所有数据都在客户机上,而服务器未验证任何内容,总有办法破解你的客户端应用程序。相反,您应该创建一个进行计算的服务,wpf应用程序只是一个访问服务器的瘦客户机,在每个请求中,如果客户机仍然可以访问该服务,则会提供并验证客户机许可证