我可以分发使用用户无法访问但应用程序可以访问的密钥的 .NET 应用程序吗?
请注意,我使用分发这个词的意思是应用程序被交付以在用户的计算机中运行,而不是在云或集群中运行。
我可以分发使用用户无法访问但应用程序可以访问的密钥的 .NET 应用程序吗?
请注意,我使用分发这个词的意思是应用程序被交付以在用户的计算机中运行,而不是在云或集群中运行。
足够熟练的用户可以访问应用程序中的任何内容。
这就是为什么游戏等从将关键算法存储在程序中转移到使用外部游戏制造商拥有的服务器进行验证的原因。
如果您只是想阻止普通的乔,只需将其散列并像任何其他变量一样存储它......就像门上的挂锁一样,它不会阻止坚定的用户,而是让诚实的人保持诚实。
您的问题有两个一般性的答案。
如果您的问题是这样的:
我是否可以以任何方式将密钥与我的可执行文件一起传递,以使任何用户 100% 无法访问,但我的程序仍然可以访问它?
那么答案是这样的:不,你不能。
您的代码可以做的任何事情,用户也可以做。
您所能做的就是让用户感到困难。加密它,隐藏它。
如果您的问题是这样的:
我是否可以以任何方式将密钥与我的可执行文件一起传递,这使得我的用户不太可能访问,但我的程序仍然可以访问它?
那么答案是这样的:参见第一种情况的答案,特别是关于让用户感到困难的部分。
根据您尝试加密的内容,您将提供公钥,保留您的私钥,然后您可以自由分发它。你到底想完成什么?
并不真地。您可以使检索密钥变得烦人,但如果程序可以使用它,用户也可以不可避免地读取它。