需求: 数据放在公网上,如程序,博客,但是涉及的比如gpt的访问token,个人数据库的密码这些如何做到不外露,而且代码在自己电脑就能跑,下载下来,不需要折腾加上相关的逻辑(能不自己做就不 ,是人都会犯错)
加密文本
macOS
如果你是苹果「全家桶」用户,习惯用系统自带的密码管理功能,大概知道可以通过内置的「钥匙串访问」(Keychain Access,位于 /Applications/Utilities
目录下)查看和管理密码。
-
如果想添加一条存储 OpenAI API 密钥的安全备注,可以运行:
security add-generic-password -D "secure note" -s "OPENAI_API_KEY" -a "OPENAI_API_KEY" -w
-
macos解密
security find-generic-password -s "OPENAI_API_KEY" -w
- 上面的还可以结合用kitty 做密码管理器 比如sudo 就不用输入密码了,敲击个快捷键(比如我下面添加的 cmd+i )就行
# 例如sudo 这样的需要输入密码 , 就这么输入
map cmd+i kitten kittens/password.py security find-generic-password -l "macminiPass" -w
演示如下:
Linux
与 macOS 不同,常见的 Linux 发行版没有统一的内置凭据管理工具,但绝大多数发行版的官方软件源都收录了 pass
(全称为 password-store)这款命令行工具。这也是被广泛推荐、符合 UNIX 简洁风格的解决方案。因此,本文也选择它作为 Linux 下的推荐方案来演示。
加密解密文件
参考 Encrypt and decrypt a file using SSH keys
ubuntu18 成功, macos 不成功
# 生成 加密密钥
openssl rand -out secret.key 32
# secret加密文件
openssl aes-256-cbc -in secretfile.txt -out secretfile.txt.enc -pass file:secret.key
# 把secret 给加密了
openssl rsautl -encrypt -oaep -pubin -inkey <(ssh-keygen -e -f ~/.ssh/id_rsa.pub -m PKCS8) -in secret.key -out secret.key.enc
# 做测试 ,放在一个decry 目录
cp secret*.enc decry
cd decry
ls
# 解密 secret
openssl rsautl -decrypt -oaep -inkey ~/.ssh/id_rsa -in secret.key.enc -out secret.key
rm secretfile.txt
# 解密文件
openssl aes-256-cbc -d -in secretfile.txt.enc -out secretfile.txt -pass file:secret.key\n
ll
vim secretfile.txt