我使用的其中一个库要求您在使用为您的帐户唯一生成的API密钥时传递它,并且必须保持完全私密且安全。
如果我将密钥作为private const string API_KEY = "ABC";
放入我的应用程序,那么有人可能会反编译我的代码并查看密钥。
一般的.NET混淆(例如来自免费的混淆工具)是否足以掩盖这一点,或者是否有更好的方法来尝试阻止snoopers获取原始API密钥?
答案 0 :(得分:1)
您可以在app.config文件中使用自定义部分(很好的选择)。用您的数据(密钥)填充它,然后加密配置文件。这是样本:
//loading config file...
config = ConfigurationManager.OpenExeConfiguration("AvtoNetPublisher.exe");
//getting specific section (in this case custom class)
csp = (GmailSettingsProvider)config.GetSection("gsp");
if (!csp.SectionInformation.IsProtected)
{
DialogResult result = MessageBox.Show("Configuration is not protected, proceed to enter configuration!", "Configuration is not protected", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result != DialogResult.OK)
{
throw new Exception("Configuration was interupted by user!");
}
csp.UserName = Microsoft.VisualBasic.Interaction.InputBox("Enter user name", "UserName", csp.UserName, Cursor.Position.X, Cursor.Position.Y);
csp.Password = Microsoft.VisualBasic.Interaction.InputBox("Enter password", "Password", csp.Password, Cursor.Position.X, Cursor.Position.Y);
csp.ImapServer = Microsoft.VisualBasic.Interaction.InputBox("Enter ImapServer", "ImapServer", csp.ImapServer, Cursor.Position.X, Cursor.Position.Y);
csp.Port = Convert.ToInt16(Microsoft.VisualBasic.Interaction.InputBox("Enter int32 Port", "Port", csp.Port.ToString(), Cursor.Position.X, Cursor.Position.Y));
csp.EnableSSL = Convert.ToBoolean(Microsoft.VisualBasic.Interaction.InputBox("Enter bool EnableSSL", "EnableSSL", csp.EnableSSL.ToString(), Cursor.Position.X, Cursor.Position.Y));
csp.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
config.Save();
}
这可以在首次安装或加载时触发。