为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止有人打印 cryptography.fernet 包中的解密密码

如何防止有人打印 cryptography.fernet 包中的解密密码

慕的地8271018 2023-09-19 17:36:03
我是这个模块的新手,所以如果我的问题听起来很愚蠢,请原谅我。我正在创建一个应用程序并使用 cryptography.fernet 来加密 MySQL 凭据。例如,如果我加密并得到这个from cryptography.fernet import Fernetkey = b'PCHl_MjGyEyBxLYha3S-cWg_SDDmjT4YYaKYh4Z7Yug='cipher_suite = Fernet(key)ciphered_text = cipher_suite.encrypt(b"SQLShack@DemoPass")   print(ciphered_text)如果我必须像下面这样解密密码,如何防止最终用户简单地打印出密码?他们可以只打印 print(unciphered_text)。将密码保存到数据库也达不到目的,因为我的密码是用于数据库的。感谢您提前提供的帮助。key = b'PCHl_MjGyEyBxLYha3S-cWg_SDDmjT4YYaKYh4Z7Yug='cipher_suite = Fernet(key)ciphered_text = b'gAAAAABd_jcLWEz-fIBt3y2P3IoB3jGdbNnSzeSINZ8BomP9DrKIX2YF4pMLkMCvCxLshmKgKXk7np42xop6QIaiawbhjGayMU0UrbTeUX-6XA8zmo55vwA='unciphered_text = (cipher_suite.decrypt(ciphered_text))我只想在我的代码中这样做try:  engine = create_engine('mysql+mysqlconnector://root:encrypted_password@encrypted_host:3306/encrypted_databsed?auth_plugin=mysql_native_password')except engine.closed():    print("Failed to create engine")
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

如果我必须像下面这样解密密码,如何防止最终用户简单地打印出密码?

事实上 - 你不能。

我正在创建一个应用程序并使用 cryptography.fernet 来加密 MySQL 凭据。

理论上,您可以编写一个返回数据库连接而不是明文密码的库。然而,一旦密文和密钥位于同一位置(在客户端),就没有什么可以阻止客户端解密并打印明文。


查看完整回答
反对 回复 2023-09-19
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信