欢迎来到下一个 pikotutorial!
在之前的一篇文章中,我们学习了如何使用 python 执行对称数据加密。最后一个示例是将用户提供的密码直接转换为加密密钥。尽管它有效,但这不是推荐的方法。今天给大家推荐一个密钥导出函数。
密钥导出函数
下面您可以找到如何在 python 中使用 pbkdf2hmac 密钥导出函数的扩展示例:
# import utility for Base64 encodingimport base64# import Fernetfrom cryptography.fernet import Fernetfrom cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMACfrom cryptography.hazmat.primitives import hashes# import getpass for secure input readingfrom getpass import getpass# read plain text passwordplain_text_password: str = getpass(prompt='Password: ')# convert the password to bytespassword_bytes = plain_text_password.encode('utf-8')# some salt value for demonstration, use a secure random value in practicesalt = b'\x00' * 16# use PBKDF2HMAC to derive a secure key from the passwordkdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000)# encode the derived key with Base64key = base64.urlsafe_b64encode(kdf.derive(password_bytes))# create a Fernet instance with the derived keyfernet = Fernet(key)# data to be encrypteddata = b'Some secret data'# encrypt the dataencrypted_data = fernet.encrypt(data)# decrypt the datadecrypted_data = fernet.decrypt(encrypted_data)# print the decrypted dataprint(f"Decrypted text: {decrypted_data.decode()}")
以这种方式创建的密钥不仅更安全,而且不再要求纯文本密码长度恰好为 32 个字节。
初学者注意事项:记住加盐是解密数据所必需的!
以上就是使用Python的密钥导出函数的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1355588.html
微信扫一扫
支付宝扫一扫