当前位置: 首页 > news >正文

怎么做同城网站/杭州百度人工优化

怎么做同城网站,杭州百度人工优化,推广是什么,如何建立免费网站一、概述 使用sqlite3的免费版本是不支持加密的。为了能使用上加密sqlite3,有一个免费的开源项目sqlcipher提供了免费和付费的加密sqlite功能。我们当然选择免费的版本啦。 官方网站: https://www.zetetic.net/sqlcipher/open-source/ 文档目录&#…

一、概述

使用sqlite3的免费版本是不支持加密的。为了能使用上加密sqlite3,有一个免费的开源项目sqlcipher提供了免费和付费的加密sqlite功能。我们当然选择免费的版本啦。

官方网站:
https://www.zetetic.net/sqlcipher/open-source/

文档目录:
https://www.zetetic.net/sqlcipher/documentation/

设计简介:
https://www.zetetic.net/sqlcipher/design/

API文档:
https://www.zetetic.net/sqlcipher/sqlcipher-api/

源码下载
git clone https://github.com/sqlcipher/sqlcipher.git

如何编译
查看源码的README.md 的编译过程。

二、实际编译

2.1 编译脚本

我们使用的目标板是aarch64(arm64)的linux环境,我们的查看一下我们的编译环境。编译环境如下:

$ env | grep aarchCXX=aarch64-linux-gnu-g++
LD=aarch64-linux-gnu-ld
AR=aarch64-linux-gnu-ar
NM=aarch64-linux-gnu-nm
PATH=/home/xx/.local/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin:/usr/local/node-v18.16.0-linux-x64/bin:/home/xx/workspace/toolchain/go/bin:/home/xx/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/usr/local/openresty/nginx/sbin:/home/xx/workspace/toolchain/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin:/home/xx/sonar_tools/sonar-scanner-4.7.0.2747-linux/bin:/home/xx/sonar_tools/build-wrapper-linux-x86
CC=aarch64-linux-gnu-gcc
CROSS_COMPILE=/home/xx/workspace/rk3568-git/rk_hal/src/rk3568/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

下面是交叉编译的脚本如下:

# cat build.sh
export AARCH64_SYSROOT=/your/aarch64/sysroot_path
./configure --enable-tempstore=yes  --host aarch64 CFLAGS="-DSQLITE_HAS_CODEC --sysroot=$AARCH64_SYSROOT"  LDFLAGS="-lcrypto --sysroot=$AARCH64_SYSROOT" --prefix=$AARCH64_SYSROOT/usr/local
unset AARCH64_SYSROOT

2.2 编译和安装

make

编译生成了./.libs/libsqlcipher.a 库,是一个静态库。应该也能生成动态库。

make install

安装了头文件和库

include└── sqlcipher├── sqlite3ext.h└── sqlite3.h
bin└── sqlcipher

三、实际使用

3.1 应用代码编写与编译

在使用过程中和sqlite3原生的api一样使用。
在应用代码中,去掉原生的sqlite3.h头文件,包含sqlcipher/sqlite3.h和 sqlcipher/sqlite3ext.h头文件。你会发现原生头文件和sqlcipher的防止重复包含宏定义相同,所以一定要去掉原生的有文件。
在应用代码的编译中,Makefile加入编译选项CFLAGS += -DSQLITE_CORE=1 -DSQLITE_HAS_CODEC=1。不加就会报错identifier “sqlite3_api” is undefined。 在链接阶段链接-lcrypto -lsqlcipher。无需再
链接-lsqlite3。

3.2 设置密码

int sqlite3_key(sqlite3 *db, const void *pKey, int nKey);

上述函数等价于sqlite语句PRAGMA key = 'passphrase';

3.3 修改密码

sqlite3_rekey(sqlite3 *db, const void *pKey, int nKey);

上述函数等价于PRAGMA rekey = 'new-passphrase';

修改密码的流程一般是先输入旧的密码然后修改新密码。先sqlite3_key 然后sqlite3_rekey。等价于下面sqlite操作。

PRAGMA key = 'passphrase'; -- start with the existing database passphrase
PRAGMA rekey = 'new-passphrase'; -- rekey will reencrypt with the new passphrase

验证:对于之前没有密码的数据库可以字节rekey吗?

3.4 使用sqlcipher打开加密数据库

sqlcipher
.open file.db
PRAGMA key = 'passphrase'
  • 成功示例:
# sqlcipher file.db
SQLite version 3.41.2 2023-03-22 11:56:21 (SQLCipher 4.5.4 community)
Enter ".help" for usage hints.
sqlite> PRAGMA key = '123456';
ok
sqlite> select * from sqlite_master;
  • 失败示例:
# sqlcipher 
SQLite version 3.41.2 2023-03-22 11:56:21 (SQLCipher 4.5.4 community)
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open file.db
sqlite> PRAGMA key = '123456adss';
ok
sqlite>  select * from sqlite_master;
Parse error: file is not a database (26)
sqlite> .q

如果未加密的数据库可以直接使用selelct访问sqlite_master表,加密的数据库访问时,会报错。未加密的数据库,使用原生的sqlite3工具也能打开,加密的
数据库使用sqlite3打开后设置密码无反应ok,select访问报错file is not a database。

3.5 sqlchiper 数据库备份

调用backup = sqlite3_backup_init(new_db, “main”, dbh->db, “main”)时报错了。报错如下:
sqlite3 backup init error, backup is not supported with encrypted databases。看来加密数据库不支持这样的备份API。

在API中找到了一个这个函数,用来进行加密和非加密之间复制和拷贝。
SQLCipher用法注意:

如果当前数据库是明文数据库,SQLCipher不会加密。如果当前数据库已加密,且pNew0或nNew0,则SQLCipher不会解密。这个例程仅适用于已经加密的数据库,以便更改密钥。
根据SQLCipher文档,从明文到加密或加密到明文的转换应该使用附加的数据库和sqlcipher_export()方便函数。

sqlcipher_export() 函数
sqlcipher_export是一个方便的函数,它将主数据库的全部内容复制到附加数据库,包括架构、触发器、虚拟表和所有数据。它的主要功能是可以轻松地从非加密数据库迁移到加密数据库,
从加密数据库迁移到非加密数据库,或者在 SQLCipher 支持的加密数据库的各种选项之间迁移。有关此主题的其他信息和讨论,请参阅这篇关于如何使用 SQLCipher 加密明文数据库的帖子

Example 1: Encrypt a Plaintext Database

$ ./sqlcipher plaintext.db
sqlite> ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'testkey';
sqlite> SELECT sqlcipher_export('encrypted');
sqlite> DETACH DATABASE encrypted;

Example 2: Decrypt a SQLCipher database to a Plaintext Database

$ ./sqlcipher encrypted.db
sqlite> PRAGMA key = 'testkey';
sqlite> ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';  -- empty key will disable encryption
sqlite> SELECT sqlcipher_export('plaintext');
sqlite> DETACH DATABASE plaintext;

Example 3: Convert from a 3.x to 4.x Database

$ ./sqlcipher 1.1.x.db
sqlite> PRAGMA key = 'testkey';
sqlite> PRAGMA cipher_page_size = 1024;
sqlite> PRAGMA kdf_iter = 64000;
sqlite> PRAGMA cipher_hmac_algorithm = HMAC_SHA1;
sqlite> PRAGMA cipher_kdf_algorithm = PBKDF2_HMAC_SHA1;
sqlite> ATTACH DATABASE 'sqlcipher-4.db' AS sqlcipher4 KEY 'testkey';
sqlite> SELECT sqlcipher_export('sqlcipher4');
sqlite> DETACH DATABASE sqlcipher4;

Example 4: Changing Cipher Settings

$ ./sqlcipher encrypted.db
sqlite> PRAGMA key = 'testkey';
sqlite> ATTACH DATABASE 'newdb.db' AS newdb KEY 'newkey';
sqlite> PRAGMA newdb.cipher_page_size = 4096;
sqlite> PRAGMA newdb.cipher = 'aes-256-cfb';
sqlite> PRAGMA newdb.kdf_iter = 10000;
sqlite> SELECT sqlcipher_export('newdb');
sqlite> DETACH DATABASE newdb;

Example 5: Copying an attached plaintext database to a new empty encrypted main database

$ ./sqlcipher encrypted.db
sqlite> PRAGMA key = 'testkey';
sqlite> ATTACH DATABASE 'plain.db' AS plain KEY '';
sqlite> SELECT sqlcipher_export('main', 'plain');
sqlite> DETACH DATABASE plain;

相关文章:

sqlite3免费加密开源项目sqlcipher简单使用

一、概述 使用sqlite3的免费版本是不支持加密的。为了能使用上加密sqlite3,有一个免费的开源项目sqlcipher提供了免费和付费的加密sqlite功能。我们当然选择免费的版本啦。 官方网站: https://www.zetetic.net/sqlcipher/open-source/ 文档目录&#…...

SOLIDWORKS PDM Professional中的Add-ins

实现COM接口IEdmAddIn5的DLLs:IEdmAddIn5 Interface - 2019 - SOLIDWORKS API Help。通过“Add-in特性”对话框添加到文件库中:Administrate Add-ins Dialog Box - 2019 - SOLIDWORKS API Help通知SOLIDWORKS PDM Professional 用户操作: 将Add-in添加到…...

干货 | 郭晓雷:数智安全监管机制研究与思考

作者:郭晓雷本文约4300字,建议阅读8分钟 本文报告的主要内容关于数据安全,从学术或者技术的角度,更多地认为人工智能是数据处理的新技术,其应用会产生更加丰富的数据处理活动场景。 郭晓雷:今天报告的主要内…...

感应雷电浪涌的防线,SPD浪涌保护器

SPD - Surge Protective Device SPD 是防止雷击导致故障的避雷器,代表浪涌保护设备。一般指浪涌保护器,浪涌保护器,也叫防雷器,是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置。 IEC/ EN61643-11 &#xff08…...

ThreeJS教程:屏幕坐标转标准设备坐标

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 屏幕坐标转标准设备坐标 在讲解下节课鼠标点击选中模型之前,先给大家讲解下坐标系的问题。 获取鼠标事件坐标 先来了解一些,普通的web前端相关知识。 鼠…...

[elasticsearch 实现插入查询小demo ]

目录 前言: 。以下是Java语言实现Elasticsearch数据插入和批量插入的示例代码: 我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法: 下面是一个Java代码示例,演示了如何使用Elast…...

因为计算机中丢失VCRUNTIME140怎么办?为什么会丢失VCRUNTIME140.dll

vcruntime140.dll是一个Windows动态链接库,其主要功能是为C/C编译的程序提供运行时支持。这个库在Microsoft Visual Studio 2015中被引入,其名称中的“140”代表版本号。在我们打开运行软件或者游戏程序的时候,电脑提示因为计算机中丢失VCRUN…...

【满分】【华为OD机试真题2023B卷 JAVAJS】数字游戏

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 数字游戏 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 小明玩一个游戏。系统发1+n张牌,每张牌上有一个整数。第一张给小明,后n张按照发牌顺序排成连续的一行。需要小明判断,后n张牌中,是否存在连续的若干张…...

NLP常用的三种中文分词工具对比

本文将对三种中文分词工具进行使用尝试,这三种工具分别为:哈工大的LTP,结巴分词以及北大的pkuseg。 1、准备 首先我们先准备好环境,即需要安装三个模块: pyltpjiebapkusegLTP的分词模型文件cws.model 在用户字典中…...

Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法

一、技术指标 •图像文件格式:DCM、JPG、BMP、TIF等 •可支持显示属性设置:24/32位真彩;256位色(黑白) •可支持监视器分辨率:1024﹡768;1280﹡1024;1600&…...

接口测试介绍以及用例编写

6.1 接口 6.1.1 接口概述 定义: 接口就是API(Application Programming Interface,应用程序接口),是一个软件或服务对外提供的接口,别人只要调用这接口,而内部如何实现,不需要关心。…...

MATLAB迭代的三种方式以及相关案例举例

系列文章目录 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 系列文章目录 前言 …...

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑,而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…...

【C++】链表

链表是一种常见的数据结构,用于存储和组织数据。它的每个元素被称为结点(Node),结点是链表的基本单位,链表由一系列结点(Node)组成,每个结点包含两个部分:数据部分&#…...

day42_jsp

今日内容 零、 复习昨日 一、JSP 二、EL 三、JSTL 四、MVC 零、 复习昨日 一、JSP 1.0 引言 现有问题 在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处? 开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注…...

JAVA面试八股整理——基础部分

JAVA 基础 JVM JDK JRE JVM java虚拟机,针对不同的系统,使用相同的字节码会给出相同结果。一次编译,随处可运行 JDK Java SDK 提供给开发者使用,创建和编译Java程序。包含了JRE,同时包含了其它工具(jav…...

【JavaSE】Java基础语法(二十八):HashSet集合

文章目录 1. HashSet集合概述和特点2. HashSet集合的基本应用3. 哈希值4. HashSet集合存储学生对象并遍历【应用】 1. HashSet集合概述和特点 底层数据结构是哈希表存取无序不可以存储重复元素没有索引,不能使用普通for循环遍历 2. HashSet集合的基本应用 存储字符串并遍历 …...

压缩感知重构之匹配追踪算法

算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点&a…...

【SpinalHDL快速入门】4.6、复合类型之Vec

文章目录 1.1、描述1.2、声明1.2.1、实例 1.3、运算符1.3.1、比较(Comparison)1.3.2、类型转换(Type cast)1.3.3、杂项(Misc)1.3.4、Lib辅助函数(Lib helper functions) 1.1、描述 …...

探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行

2023年5月30日,世优科技全栈技术产品体验活动(第二期)顺利落下帷幕。此次活动共邀请到30余位各行各业的嘉宾到场,在两个多小时的开放日活动中,世优科技全面展示数字人及虚拟直播领域的技术产品体系。来访嘉宾们全程体验…...

有奖励!2023陕西省首台(套)重大技术装备产品项目申报条件、认定材料

本文整理了2023陕西省首台(套)重大技术装备产品项目申报条件,认定材料等相关内容,感兴趣的朋友快跟小编一起来看看吧! 一、重点支持方向及领域 重点支持方向及领域:高档工业母机、电力装备、大型矿山和冶金…...

2023/6/6总结

CSS 如果想要实现背景颜色渐变效果&#xff1a; left是从左边开始&#xff0c;如果想要对角线比如&#xff0c;左上角就是left top&#xff0c;渐变效果始终是沿着一条线来实现的。 下面是跟着视频教学用flex布局写的一个移动端网页&#xff1a; html代码&#xff1a; <!…...

api习题

// 1 整数或者小数 // String a"378.000"; // String rex"[1-9]\\d*|[0-9]|*\\.[0-9]*"; // System.out.println(a.matches(rex)); // 2 只能输入数字&#xff1a; // String rex"\\b*"; // 3 只能输入n位的数字&#xff1a; // String r…...

(STL之string)string类的用法详解

string类成员函数PART1 成员函数(构造函数拷贝构造函数)&#xff1a;string 函数原型&#xff1a; string(); string (const string& str); string (const string& str, size_t pos, size_t len npos); string (const char* s); string (const char* s, size_t n)…...

基于RT-Thread快速上手SD NAND 虚拟文件系统

SD NAND 也称之为贴片式TF卡&#xff0c;贴片式SD卡&#xff0c;采用标准的SDIO接口&#xff0c;兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M&#xff0c;对比128M的SD卡&#xff0c;可以看到贴片SD卡尺寸更小&#xff0c;不要SD卡座&#xff0c;占…...

性能测试实战

目录 一、创建线程组与http(s)请求1、JMeter关键词2、创建线程组3、线程组参数举例说明案例1:模拟5个用户,同时访问百度案例2:模拟5个用户,同时访问百度,并且循环2次案例3:模拟5个线程,持续执行10秒的时间案例4:模拟10秒启动10个线程,循环执行20秒4、创建http请求a、操…...

【PWN · 总结】system返回shell(‘/bin/sh‘、‘sh‘、$(0))

pwn题中要通过system/excute等返回shell&#xff0c;进而cat flag。今天遇到一题&#xff0c;参数$(0)也可返回&#xff0c;有必要记录一下。 目录 前言 一、/bin/sh 1.strings 2.IDA 3.pwntools 4.ROPgadget 5.libc中寻找 二、sh 三、$(0) exp IDA查看机器码 …...

《庄子》笔记

庄子 前述&#xff1a;庄子&#xff0c;战国时宋国人。 1.鲲鹏&#xff1a;胸襟宽广&#xff0c;高远&#xff0c;无界限。 2.寒蝉和灵龟&#xff1a;小年的悲哀。 3.小麻雀的得意&#xff1a;境界不同&#xff0c;又有什么可比性呢。 4.列子随风而行&#xff1a;得大道者&…...

五、VBO、EBO 和 VAO

五、VBO、EBO 和 VAO VBO、EBO 和 VAO&#xff1a; VBO&#xff08;Vertex Buffer Object&#xff09;是指顶点缓冲区对象&#xff0c;而 EBO&#xff08;Element Buffer Object&#xff09;是指图元索引缓冲区对象&#xff0c;VAO 是顶点数据的缓冲区对象&#xff0c;VAO 和…...

数据库期末复习(7.2)查询优化

查询优化的概述 商用数据库花了很多的资金投入到查询优化。 查询优化的分类 逻辑查询优化 物理查询优化 比逻辑查询计划多了怎么去执行的方式,为的是数据操作速度更快 逻辑查询优化的三种关键技术 在科学研究的道路上我们往往不是一帆风顺的,人的认识也是局限的,但是我…...