zoukankan      html  css  js  c++  java
  • 加密sqlite3数据库文件


    GitHub地址

    EncryptSqlite3

    加密sqlite3数据库,产生的数据库文件别人打不开。

    实现原理

    1. 在写入文件前对每个字节加密,这样存入文件的就是加密后的数据。
    2. 将从文件读取的数据每个字节都解密,这样就得到正确数据用于处理。
    3. 可以搜索c/sqlite3.c和go/sqlite3-binding.c这两个源码中的(ENCRYPT_SQLITE3)宏,分析代码就行。

    使用方法

    在./c/和./golang/目录中都有build.bat和build.sh
    在windows环境使用cmd进入目录执行.uild.bat即可
    在Linux环境进入目录后执行./build.sh即可
    可以使用编译后的官方控制台程序./c/sqlite3 t.db来通过命令行读写sqlite3文件
    

    不足之处

    由于写入和读取位置由sqlite3控制,因此加解密都只能为针对单字节。因为大多数对称加密都需要从头开始加解密,像AES有些模式后面加密的数据依赖前面加密的结果。所以我在本项目中实现的仅仅是将每个字节和密钥进行异或,这是最简单的单字节加解密。当然如果别人知道这个这个规则,最多尝试255次就能破解。当然我有一些自己的想法,比如做一些随机数混淆单字节数据,但需要设计可靠的加解密逻辑,有兴趣的可以自己尝试吧。

  • 相关阅读:
    Gitlab邮箱配置
    Zabbix邮件告警提示Couldn't resolve host name解决办法
    Gitlab备份和恢复操作
    Gitlab权限管理
    编译安装Nginx
    [0] 数据库读写分离
    [0] C# & MongoDB
    [0] 平衡二叉树
    [0] 分布式存储 Memcached
    [0] MSSQL 分库查询
  • 原文地址:https://www.cnblogs.com/janbar/p/13698930.html
Copyright © 2011-2022 走看看