赞
踩
sqlite3数据库本身不支持密码设置,但数据库就这么暴露着,随意就能被他人连接查看,肯定是不可行的。
pysqlcipher3是一种Python库,可以通过使用OpenSSL库对SQLite数据库进行加密和解密。它提供了在Python中连接到加密的SQLite数据库的功能,可以执行查询和事务等操作。
直接在windows上 pip install pysqlcipher3 的方式会报错,因此需要按照以下步骤进行:
Download & Install Tcl | ActiveState
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions(我用的是
Win64OpenSSL-1_1_1w)
libcrypto.def —> libeay32.def
libcrypto.lib —> libeay32.lib
libssl.def —> libssl.def
libssl.lib —> libssl.lib
注意配置环境变量: OPENSSL_CONF C:\Program Files\OpenSSL-Win64\bin\openssl.cfg
安装时只选择 C++的桌面开发 的组件就可以
GitHub - sqlcipher/sqlcipher: SQLCipher is a standalone fork of SQLite that adds 256 bit AES encryption of database files and other security features.解压后修改 Makefile.msc 文件:
1. TCC = $(TCC) -DSQLITE_TEMP_STORE=1
修改为:
TCC = $(TCC) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC -I"C:\Program Files\OpenSSL-Win64\include"
2. 在以下位置 新增下面两行红色配置
# If ICU support is enabled, add the linker options for it.
#
!IF $(USE_ICU)!=0
LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR)
LTLIBS = $(LTLIBS) $(LIBICU)
!ENDIF
# >
LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:"C:\Program Files\OpenSSL-Win64\lib\VC\static"
LTLIBS = $(LTLIBS) libcrypto64MT.lib libssl64MT.lib ws2_32.lib shell32.lib advapi32.lib gdi32.lib user32.lib crypt32.lib
# You should not have to change anything below this line
打开 x64 Native Tools Command Prompt for VS 2022 ,目录切换到 sqlcipher,执行以下指令:
nmake /f Makefile.msc clean
nmake /f Makefile.msc
编译后会生成 sqlite3.c 和 sqlite3.h文件(注意:编译报错没关系,只要生成了这两个文件)
GitHub - rigglemania/pysqlcipher3: Python 3 bindings for SQLCipher
在其根目录创建文件夹amalgamation,并将上一步生成的sqlite3.c 和 sqlite3.h两个文件拷贝进来。
下载SQLite Download Page , Source Code中会包含sqlite3.h, sqlite3.c等4个文件, 在pysqlcipher3\src\python3中创建文件夹sqlcipher, 将4个文件放入其中
打开x64 Native Tools Command Prompt for VS 2022,目录切换到 pysqlcipher3
1. 执行 python setup.py clean
2. 执行 python setup.py build_amalgamation
3. 执行 python setup.py install
如果有类似错误,将..\pysqlcipher3\src\python3文件夹下所有.c文件内容中的 MODULE_NAME 替换成 "pysqlcipher3.dbapi2", 再重新执行命令
至此,就成功安装了pysqlcipher3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。