我正在开发一个开源 javascript 应用程序,我正在尝试与第三方 API(特别是 github)进行交互。我试图只保留我的整个应用程序客户端,所以我真的没有服务器可以回退或存储隐藏文件。作为 OAuth 过程的一部分,我需要提供为我的 api 密钥提供的密钥。我不应该发布或共享此密钥。
我想出了以下解决方案:
- 使用三重 DES 和密码短语加密密钥。
- 将加密版本放在我的存储库中的某个地方。
- 当我需要通过 Oauth 进行身份验证时,提示输入密码并恢复密钥。
- 一旦知道,将机密存储在本地存储中以避免将来出现提示。
我本质上是在存储密钥的转换版本。我想这对我来说是我必须从用户那里获取密码而不是完整的密钥。它应该比随机字节更容易记住。
这足够安全吗?它不是一个超级关键的应用程序,但我想尽我所能保护我被告知不要分享的东西。有没有比 3DES 更好的方法来以可逆方式加密密钥?