如何从终端输入读取Fernet密钥?Python本地API密钥加密场景咨询
嘿,能看到你在动手实践Python加密相关的内容真的很棒!关于你想从终端读取Fernet密钥的需求,这里有几个实用的方案,你可以根据自己的场景选择:
方法1:用input()直接读取终端输入(快速简单)
这是最适合小型脚本或者测试场景的方式,直接通过终端交互式输入密钥:
from cryptography.fernet import Fernet, InvalidToken import string import random # 你的API密钥生成逻辑保持不变 char_num = 24 allchar = string.ascii_letters + string.digits random_api = "".join(random.choice(allchar) for x in range(char_num)) print("Generated API key:", random_api) # 从终端读取Fernet密钥,strip()去掉首尾空格避免输入失误 crypt_key_input = input("请输入你的Fernet密钥:").strip() try: # 验证密钥有效性并初始化Fernet对象 fernet_key = Fernet(crypt_key_input) # 加密API密钥(注意要转成bytes格式) encrypted_api = fernet_key.encrypt(random_api.encode()) print("加密后的API密钥:", encrypted_api.decode()) except InvalidToken: print("❌ 错误:输入的不是有效的Fernet密钥!请确保是URL-safe的base64编码字符串(长度为44字符)。")
方法2:通过命令行参数传入密钥(适合脚本化/自动化场景)
如果你的脚本需要频繁被调用,或者想通过脚本参数传递密钥,用argparse会更规范,也方便和其他工具集成:
from cryptography.fernet import Fernet, InvalidToken import string import random import argparse def main(): # 设置命令行参数解析器 parser = argparse.ArgumentParser(description="加密随机生成的API密钥") parser.add_argument("--fernet-key", required=True, help="用于加密的Fernet密钥(URL-safe base64格式,44字符)") args = parser.parse_args() # 生成API密钥 char_num = 24 allchar = string.ascii_letters + string.digits random_api = "".join(random.choice(allchar) for x in range(char_num)) print("Generated API key:", random_api) try: fernet_key = Fernet(args.fernet_key) encrypted_api = fernet_key.encrypt(random_api.encode()) print("加密后的API密钥:", encrypted_api.decode()) except InvalidToken: print("❌ 错误:无效的Fernet密钥,请检查格式!") if __name__ == "__main__": main()
运行方式:在终端里执行
python your_script_name.py --fernet-key 你的Fernet密钥字符串
额外小贴士
- Fernet密钥格式要求:必须是URL-safe的base64编码字符串,长度固定为44字符。如果是你自己生成的密钥,用
Fernet.generate_key()得到的就是符合要求的格式,记得妥善保管,丢失后无法解密数据! - 可选优化:可以给脚本加一个生成并保存密钥的功能,比如:
这样你可以先调用这个函数生成密钥,之后再用它来加密API密钥。def generate_save_key(): key = Fernet.generate_key() with open("fernet_secret.key", "w") as f: f.write(key.decode()) print("✅ Fernet密钥已保存到fernet_secret.key,请妥善存储!")
内容的提问来源于stack exchange,提问作者Nephilim
相关产品推荐
相关产品推荐

