【发布时间】:2017-01-15 14:10:53
【问题描述】:
已经找到这么多答案后的第一个问题......
我创建了一个使用 RSA 签名的许可证类。使用公钥检查签名,使用私钥创建签名。由于我只自己创建许可证,因此签名/创建代码不需要在许可证类本身(已发布代码)中。但另一方面,我希望将所有类代码放在一起,而不是在甚至是另一个项目(本地许可证管理器应用程序)的一部分的部分类中编写许可证签名/创建代码。执行以下操作是否安全:
public class License {
private const string publicRSA = "whatever";
#if DEBUG
public void CreateLicense()
{
string privateRSA = "whatever again";
// Do license creation stuff below...
}
#endif
// Other license code follows below....
}
线索是在发布版本中,私钥不应该是可见的,也不是创建许可证的代码,但对我来说,在本地运行在调试模式下使用此类的许可证管理器应用程序没有问题当我需要不时生成许可证时...
我在这里遗漏了什么(关于 C# 中的预编译器行为...)?除了意外发布调试版本之外,我可以这样做吗?有更好的选择吗?
【问题讨论】:
-
编译后的发行版不会包含
#if DEBUG指令中的代码,所以我认为它应该对开发是安全的。但是,一旦您开始发布该软件,我会将其全部删除,以免您不小心将调试版本发送给客户端。 -
@Zohar。应用程序发布后,我仍然使用本地许可证管理器中的相同类为使用已发布代码的人生成许可证。所以我不能删除它。
标签: c# cryptography