如何确保加密密钥的安全性
我在开发一个开源桌面应用,它可以离线运行,使用PySide6。我在Linux上用“pyside6-deploy”构建并部署,一切正常,但在Windows上,无论是“Nuitka部署”还是“pyside6-deploy部署”,都会遇到keyring后端的问题。
Keyring的作用是生成一个用于加密应用数据库的密钥。由于在Windows系统部署时keyring后端的问题一直存在,我改为让用户输入自己偏好的密码,对其进行加密并保存到一个文件中。将其存放在AppData目录。
由于应用是开源的,源码向公众开放,因此很容易被篡改文件。为了在Windows部署时解决keyring后端的问题,应该如何处理?或者让它在Windows部署时也能正常工作?
解决方案
Keyring需要 pywin32 来连接Windows Credential Manager,因此在将应用打包成 .exe 时,pywin32 通常不会被正确打包。因此,无法直接与Windows Credential Manager交互。为了解决这个问题,与你的做法不同,最好不是把密码保存在一个文件中,请按照下面的步骤操作:
- 确保Nuitka已通过以下命令导入pywin32-cryptes:
nuitka --standalone --onefile --include-package=pywin32-ctypes --include-package=keyring.backends.Windows --windows-console-mode=disable your_script.py
- 指示你的应用使用backed.windows,如下:
import keyring.backends.Windows
keyring.set_keyring(keyring.backends.Windows.WinVaultKeyring())
# keyring.set_password(...)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。