gpt4 book ai didi

c# - 在 #if debug 后面隐藏 RSA 私钥安全吗?

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:00 26 4
gpt4 key购买 nike

已经找到这么多答案后的第一个问题....

我制作了一个使用 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....

}

线索是在发布版本中私钥不应该可见,创建许可证的代码也不应该可见,但对我来说,在 Debug模式下本地运行使用此类的许可证管理器应用程序没有问题当我需要不时生成许可证时...

我是否遗漏了什么(关于 C# 中的预编译器行为...)?除了无意中发布了调试版本之外,我这样做是否会搬起石头砸自己的脚?有更好的选择吗?

最佳答案

如果条件不满足,if 指令不会编译其中的代码,这意味着无法反汇编已发布的代码以获取 RSA 私钥。

When the C# compiler encounters an #if directive, followed eventually by an #endif directive, it will compile the code between the directives only if the specified symbol is defined.

https://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

但是,我们不知道编译器或 Visual Studio 在构建时可能会使用什么样的优化,因此它可能会在一些其他临时文件中编译 RSA 代码以进行缓存或其他任何操作,即使已发布的代码不包含指定的代码。

此外,建议将此类关键信息存储在源代码控制之外的另一个文件夹中的另一个文件中,以免错误提交,并有一个配置 key 来存储文件的路径,以便访问由运行时。您可以在此页面中找到更多信息:

https://www.asp.net/identity/overview/features-api/best-practices-for-deploying-passwords-and-other-sensitive-data-to-aspnet-and-azure

关于c# - 在 #if debug 后面隐藏 RSA 私钥安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662064/

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