我正在开发一个开源的javascript应用程序我试图与第三方API(特别是github)进行交互。我试图只保留我的整个应用程序客户端,所以我真的不会有服务器回退或存储隐藏的文件。作为OAuth流程的一部分,我需要提供为我的api密钥提供的密钥。我不应该发布或分享这个密钥。
我提出了以下解决方案:
我基本上存储了一个秘密密钥的转换版本。我猜这一切都是因为我必须从用户那里获取密码而不是完整密钥。它应该比随机字节更容易记住。
这足够安全吗?它不是一个超级关键的应用程序,但我想尽我所能来保护我被告知不要分享的东西。是否有比3DES更好的方式以可逆的方式加密密钥?
答案 0 :(得分:5)
此解决方案的问题是应用程序必须包含解密它的代码(可能还有密钥)。最好的解决方案是不要放入存储库。
大多数应用程序将此类数据存储在版本控制软件忽略的配置文件中。然后包含一个带有假密钥的示例配置文件,以及如何重命名文件并获取自己的api密钥的说明。
这方面的一个很好的例子是“身份验证唯一键和盐”中的wordpress's config file。部分。
答案 1 :(得分:2)
这听起来足以保守秘密;虽然Triple DES有点过时了。
我会使用X轮的SHA-256来对密码进行散列,然后将该散列用作AES-256密钥。