如何在GitHub上共享的C#文件中安全地存储API凭据?

Jam*_* Ko 5 .net c# api api-key

我正在为Windows 10制作一个客户端应用程序.我有一个问题,我想开源我的代码,但让其他人看不到API密钥.这是我的源文件的相关部分:

private const string ApiKey = "YOUR_API_KEY";
Run Code Online (Sandbox Code Playgroud)

我想把它变成

private const string ApiKey = "THE_ACTUAL_API_KEY";
Run Code Online (Sandbox Code Playgroud)

什么时候编译.我该怎么做呢?


编辑:对不起任何含糊之处; 我问如何防止GitHub上的源代码的查看者看到字符串,而不必在本地构建期间更改它.此问题与加密无关.

Jam*_* Ko 11

这是我最终解决问题的方法.

我在我的项目中添加了一个类Credentials.cs:

public static class Credentials
{
    public const string ApiKey = "YOUR_API_KEY";
}
Run Code Online (Sandbox Code Playgroud)

所有对API密钥的进一步引用都是通过我添加的字段进行的.例如:

public void MakeRequest()
{
    var client = new ApiClient(Credentials.ApiKey);
    client.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

现在为神奇的部分.通过Git提交该文件后,我运行了git update-index --assume-unchanged Credentials.cs(根据这个SO答案)告诉Git停止跟踪文件的更改.换句话说,如果您修改文件并运行git diffgit status,则不会显示任何内容.

然后我用YOUR_API_KEY文件中的实际API键替换,现在一切都很完美.

  • 我认为问题是_safely_存储它.将它放在明文中绝不是"安全的".你所做的只是留下一个未提交的变化. (3认同)
  • @JeffMercado 我需要的只是确保源代码的查看者看不到它。我在原来的帖子中没有提到加密/混淆。 (2认同)