密码库
william_blake_crypto的Python项目详细描述
威廉布莱克密码
这个包裹可以
- 将yaml对象转换为加密字符串对象并返回,
- 将yaml文件转换为加密文件并返回,
- 将加密文件解密到yaml对象,
- 并且可以为这些目的生成、输入和加载密钥。
除了其他安全措施外,还应使用此包,如 在带有加密分区的操作系统上运行(例如 和禁用ssh密码访问。
使用此模块,应安全地生成和保存密钥。
在生产中,假设需要健壮的安全性,因此 使用此包可以将密钥请求为手动输入,即 当脚本启动时由用户提供,然后脚本可以 使用此密钥,该密钥仅存在于易失性内存中 脚本,用于将加密文件解密为yaml对象;例如, 加密的配置文件。
在开发过程中,可以生成密钥并将其保存到文件中,如 ~/.config/william_blake_crypto/key,可由 不需要手动输入的包,但这不是安全的 这样的方法应该只用于开发,而不是生产。
设置
pip install william_blake_crypto
生成密钥
>>>importwilliam_blake_cryptoaswbc>>>wbc.generate_key()b'rojTAcN-Tjy6W43BUozbFIhIA2jq076KysjUj8l8N4E='
因此,对于生产,这个密钥可以保存到一个文件中,比如 ~/.config/william_blake_crypto/key。文件的确切内容 在本例中如下:
rojTAcN-Tjy6W43BUozbFIhIA2jq076KysjUj8l8N4E=
输入键(用于生产)
>>>importwilliam_blake_cryptoaswbc>>>wbc.input_key()key:>>>wbc._keyb'rojTAcN-Tjy6W43BUozbFIhIA2jq076KysjUj8l8N4E='
其思想是这个密钥被安全地存储(可能在veracrypt中 卷文件)并复制粘贴到脚本所在的终端 在请求密钥时启动。这确保了密钥的存在。 仅在与正在运行的脚本关联的易失性内存中,并且 不能作为纯文本文件访问(可由 饼干)。
加载键(用于开发)
对于开发,生成密钥(如上所述)并将其保存到 文件,例如~/.config/william_blake_crypto/key,它是 此密钥用于开发的默认位置 仅(尽管此密钥的路径可以指定为 函数load_key。
>>>importwilliam_blake_cryptoaswbc>>>wbc.load_key()>>>wbc._keyb'rojTAcN-Tjy6W43BUozbFIhIA2jq076KysjUj8l8N4E='
加密和解密yaml对象
>>>importwilliam_blake_cryptoaswbc>>>wbc.load_key()>>>config={"passcode":12345}>>>token=wbc.encrypt_yaml(content=config)>>>tokenb'gAAAAABbhGbVUVbbneKoz7wvV8aOF9K6r1hSNQvDexfAflIML33iyNa_Nf7Nm6g6syIXBkyANTHw3RlGMIsCgDligdts78a6VxrBaxbOIhGqSkzNtA5GDK4='>>>wbc.decrypt_yaml(token=token){'passcode':12345}
将yaml文件转换为加密的yaml文件并将其解密
$ echo"{'passcode': 12345}" > test.yaml
>>>importwilliam_blake_cryptoaswbc>>>wbc.load_key()>>>wbc.yaml_file_to_encrypted_file(filepath_yaml="test.yaml",filepath_encrypted="test.cyaml")
$ cat test.cyaml
b'gAAAAABbhGzog6kLduLbflVx49jUD6WmIuRw8h0V7X25LrW6LnKjxbLN0pE7jMMeY9qaeGysjLsz-XA8EZ_LQVGslXhicpxLtt9K0CYFFYv2UZ3XEDt8oEI='
>>>importwilliam_blake_cryptoaswbc>>>wbc.load_key()>>>config=wbc.encrypted_file_to_yaml(filepath="test.cyaml")>>>config{'passcode':12345}
将加密的yaml文件转换为yaml文件
>>>importwilliam_blake_cryptoaswbc>>>wbc.load_key()>>>wbc.encrypted_file_to_yaml_file(filepath_yaml="test2.yaml",filepath_encrypted="test.cyaml")
$ cat test2.yaml {passcode: 12345}
未来
正在考虑使用基于时间的一次性密码(totp)的方法。 代替静态密钥,可能使用 che_guevara_otp。