CN106156649B - 一种Android系统的数据保护方法及系统 - Google Patents
一种Android系统的数据保护方法及系统 Download PDFInfo
- Publication number
- CN106156649B CN106156649B CN201510171440.8A CN201510171440A CN106156649B CN 106156649 B CN106156649 B CN 106156649B CN 201510171440 A CN201510171440 A CN 201510171440A CN 106156649 B CN106156649 B CN 106156649B
- Authority
- CN
- China
- Prior art keywords
- sequence
- android system
- tree leaf
- value pair
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种Android系统的数据保护方法及系统,通过获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据;利用数据库中索引机制在其中嵌入数字水印,从SQLite底层结构角度实现对Android系统中的数据进行保护,更有效地保护了Android系统中的数据,减少了用户的损失,带来了大大的方便。
Description
技术领域
本发明涉及数据保护技术领域,尤其涉及的是一种Android系统的数据保护方法及系统。
背景技术
随着移动终端技术的不断发展,手机等移动终端的使用越来越普及。移动终端一般采用苹果系统或Android系统。Android系统中数据存储都是采用SQLite数据库。SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。大多数对Android系统中的数据都是采用加密算法对SQLite数据库中的数据进行加密,但是这种加密方式加密效果不好,容易被破解,且被破解后会直接得到被加密的数据,对数据起到的保护效果低,给用户带来损失。
因此,现有技术还有待于改进和发展。
发明内容
本发明要解决的技术问题在于,提供一种Android系统的数据保护方法及系统,旨在解决现有的Android系统的数据保护效果不好,容易被破解的问题。
本发明解决技术问题所采用的技术方案如下:
一种Android系统的数据保护方法,其中,包括以下步骤:
S10、获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;
S20、对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据。
所述的Android系统的数据保护方法,其中,在所述步骤S20之后,还包括:
S30、当所述Android系统中的数据库文件有变化时,根据所述数字水印和嵌入数字水印的新序列获取对应的原B+tree叶子页键值对列表序列,得到原数据库文件;
S40、对原数据库文件进行操作,当操作完毕,得到变化后的数据库文件,返回步骤S10。
所述的Android系统的数据保护方法,其中,所述步骤S10具体包括:
S11、扫描Android系统中文件后缀为数据库后缀的文件,得到Android系统中的数据库文件;
S12、根据所述数据库文件获取对应的系统表;
S13、根据所述系统表获取B+tree叶子页,得到B+tree叶子页键值对列表序列。
所述的Android系统的数据保护方法,其中,所述步骤S20具体包括:
S21、根据所述B+tree叶子页键值对列表序列的大小得到数字水印;
S22、根据所述数字水印对所述B+tree叶子页键值对列表序列进行循环右移操作,得到嵌入数字水印后的新序列。
所述的Android系统的数据保护方法,其中,所述步骤S21具体包括:
将所述B+tree叶子页键值对列表序列的大小对应的阶乘数作为数字水印。
一种Android系统的数据保护系统,其中,包括:
序列获取模块,用于获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;
水印嵌入模块,用于对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据。
所述的Android系统的数据保护系统,其中,还包括:
序列恢复模块,用于当所述Android系统中的数据库文件有变化时,根据所述数字水印和嵌入数字水印的新序列获取对应的原B+tree叶子页键值对列表序列,得到原数据库文件;
更新模块,用于对原数据库文件进行操作,当操作完毕,得到变化后的数据库文件,重新获取数据库文件变化后对应的B+tree叶子页键值对列表序列,并嵌入数字水印重新排序生成对应的新序列。
所述的Android系统的数据保护系统,其中,所述序列获取模块包括:
数据库扫描单元,用于扫描Android系统中文件后缀为数据库后缀的文件,得到Android系统中的数据库文件;
系统表获取单元,用于根据所述数据库文件获取对应的系统表;
序列获取单元,用于根据所述系统表获取B+tree叶子页,得到B+tree叶子页键值对列表序列。
所述的Android系统的数据保护系统,其中,所述水印嵌入模块包括:
水印获取单元,用于根据所述B+tree叶子页键值对列表序列的大小得到数字水印;
水印嵌入单元,用于根据所述数字水印对所述B+tree叶子页键值对列表序列进行循环右移操作,得到嵌入数字水印后的新序列。
所述的Android系统的数据保护系统,其中,所述水印获取单元,用于将所述B+tree叶子页键值对列表序列的大小对应的阶乘数作为数字水印。
本发明所提供的一种Android系统的数据保护方法及系统,有效地解决了现有的Android系统的数据保护效果不好,容易被破解的问题,通过获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据;利用数据库中索引机制在其中嵌入数字水印,从SQLite底层结构角度实现对Android系统中的数据进行保护,更有效地保护了Android系统中的数据,即使被破解也不能得到直接的数据,减少了用户的损失,带来了大大的方便。
附图说明
图1为本发明提供的Android系统的数据保护方法较佳实施例的流程图。
图2为本发明提供的Android系统的数据保护系统较佳实施例的结构框图。
具体实施方式
本发明提供一种Android系统的数据保护方法及系统,为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明提供的Android系统的数据保护方法较佳实施例的流程图,如图所示,所述方法包括以下步骤:
步骤S100、获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;
步骤S200、对所述B+treeB+TREE叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据。
下面结合具体的实施例对上述步骤进行详细的描述。
在步骤S100中,获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列。具体来说,所述Android系统为常见的移动终端操作系统。Android系统的SQLite数据库文件中,页的类型可以是:Btree页、free(空闲)页或overflow (溢出)页,每个页面有其对应的文件结构。一个数据库文件中肯定有Btree页,对于空闲页或溢出页可能有也可能没有。每一个Btree用于存储一个表的索引或表的真实数据,表索引采用B-tree格式存储,表的真实数据采用B+tree格式存储。目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构,B+Tree是应文件系统所需而产生的一种B-tree的变形树。此乃现有技术。
进一步地,所述步骤S100具体包括:S110、扫描Android系统中文件后缀为数据库后缀的文件,得到Android系统中的数据库文件;S120、根据所述数据库文件获取对应的系统表;S130、根据所述系统表获取B+tree叶子页,得到B+tree叶子页键值对列表序列。
具体来说,获取B+tree叶子页键值对列表序列流程如下:由于Android系统中数据库文件以.databases、.tables、.db、和.sqlite作为后缀名,而数据库文件存储的目录一般是/data/data/某应用/database/中,所以通过扫描系统/data/data目录中文件所有后缀为以上数据库后缀的文件,便可获取到Android系统中的数据库文件。
在SQLite数据库文件中,一旦建表,就会在系统目录(System Catalogue)下自动生成系统表sqlite_master。SQLite数据库中的sqlite_master表中的记录具有固定格式,每条记录包含五个字段,包括type、name、tbl_name、rootpage和sql字段,如下所示:
CREATE TABLE sqlite_master (
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT
);
其中字段type取值是table(表)或者index(索引),字段name和tbl_name是对应的表名或者索引名,字段rootpage是根页面个数,当字段type是表时,字段sql是就是相应的建表语句,当字段type是索引时,字段sql是相应的建索引语句。
表sqlite_master 作为 SQLite 数据库的系统表,本身是以 B+tree形式组织的,数据库的 schema 信息都保存在 sqlite_master 表的叶子页中。
由于每一数据库文件都有系统表sqlite_master。如上所述,若type 字段是‘table’,则name 字段就是表的名字。所以,要获得数据库中所有表的列表,可使用SELECT语句查询系统表sqlite_master。举例如下:
建立一个数据库表,并在/data/data/xxx/database/目录下执行如下命令:
sqlite> select * from sqlite_master;
type = table
name = ChannelRecordTable
tbl_name = ChannelRecordTable
rootpage = 4
sql = CREATE TABLE ChannelRecordTable (_id integer primary keyautoincrement, channel_name text not null, channel_id text not null, channel_code text not null )
可获取到系统表sqlite_master的各个字段值,也即数据库文件中表名为ChannelRecordTable,表列字段为_id、channel_name、channel_id与channel_code。
数据库中所有的页都是以1开始顺序编号的。一个数据库可以是由多个Btree页组成的—每张表以及每个索引各对应一个Btree(表使用B+tree;索引使用B-tree)。数据库中每张表或索引都以根页面作为第一页。所有的索引和表的根页面都存储在sqlite_master表中。
数据库的第1页比较特殊。第1页的前100B包含了文件头,用于说明数据库文件,它包含了诸如这样的信息:库版本、模式版本、页大小、编码方式、是否启动自动清理
B-tree中的页由一系列B-tree记录组成,这些记录也称为有效载荷。这些记录并非实际存储的数据库记录,即表中有多个列的格式,而是更为原始的格式。一个B-tree记录(有效载荷)仅由两个域组成:键值域和数据域。键值域是每个数据库表中所包含的ROWID值或主键值;在B-tree中,数据域可以包含任意类型的内容。最终,数据库记录信息存储在数据域中。B-tree用来保持记录有序并方便记录的查询,同时,键值域能够完成B-tree的主要工作。此外,记录(有效载荷)的大小是可变的,这取决于内部键值域和数据域的大小。一般而言,每个页拥有多个有效载荷。
B-tree记录按键值序存储。所有的键值在一个B-tree中必须是唯一的(由于键值对应于rowid主键,并且SQLite很重视该域,所以唯一性是可以保证的)。表使用B+tree定义在内部页中。
B+tree的根页面和内部节点页都用于搜索导航。这些页中的数据域均指向下一层页,这些页只包含键值。所有的数据库记录都存储在叶子页中,在叶子页层,记录和页按键值序排列,以便B-tree游标能够遍历记录。
如上所述,根据表名(name字段)可在系统表sqlite_master中得知其根页编号。定位到根页后分析Btree中所有的页节点,根据页头中页类型标志找到所有B+tree叶子页,即可依据页的大小偏移量定位到表名的数据所在页。根据Sqlite中规定,页类型标志:页头中第1个字节是区分B+tree和B-tree的内部页和叶子页的标志位。该字节的值是OxOD时,表示B+tree的叶子页;为0x05时,表示B+tree的内部页;为OxOA时,表示B-tree的叶子页;为0x02时,表示B-tree的内部页。要找到表名所有B+tree叶子页,根据页类型标志,找到页起始为“0D”的标志,即找到所有数据存储区域。
获取B+tree叶子页键值对列表序列方法如下:
首先根据函数sqlite3BtreeCursor()创建一个指向当前B+tree的游标,然后根据函数sqlite3BtreeFirst()获取到游标的第一条记录,通过函数sqlite3BtreeKey()和函数sqlite3BtreeData()分别获取到游标中第一条记录的关键字和数据,接着调用函数sqlite3BtreeNext()将游标指向第二条记录,同样通过函数sqlite3BtreeKey()和函数sqlite3BtreeData()分别获取到游标中第二条记录的关键字和数据,以此类推迭代,直到获取到游标最后一条记录的关键字和数据。至此,已获取到B+tree叶子页中全部键值对列表序列。
在步骤S200中,对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据。具体来说,数字水印,是指在数字化的数据内容中嵌入的记号。被嵌入的记号一般情况下不被用户见到或察觉到。本发明中,提出将数字水印嵌入到建有索引树的结构中,在不影响索引正常工作的前提下,可以通过数字水印,检测到数据是否为非法篡改,从而有效保护系统中的数据。
根据水印的健壮性分类,数字水印可分为:鲁棒性水印和易损水印。鲁棒水印是指对于某些改变,非常敏感,不允许修改,常用于版权;易损水印是指对于某些改变容易察觉,但允许修改,并改变自身来记录数据被恶意修改的位置、类型的信息。针对以上特性,本发明采用易损水印。
将B+tree叶子页键值对列表序列简称为序列。根据嵌入的水印对序列进行重新排序。也就是说,序列首先按照某一逻辑顺序进行排列,然后提供一个数字水印,通过水印嵌入算法,得到嵌入水印后的系列。相反,给出含有水印的序列和水印,就可以得到原始序列,根据原始序列是否是按照先前的顺序排序,来判定数据是否被篡改。
进一步地,所述步骤S200具体包括:S210、根据所述B+tree叶子页键值对列表序列的大小得到数字水印;S220、根据所述数字水印对所述B+tree叶子页键值对列表序列进行循环右移操作,得到嵌入数字水印后的新序列。
具体来说,对序列嵌入数字水印流程如下:根据数学原理,对于每一个十进制整数都能被表述为。例如,十进制数,则399表示成为阶乘数字系统中的数字为“31211”。需要说明的是,这里的k为一正整数,具体值是根据十进制整数的阶乘和所确定的,如上述举例。
水印是一个数字序列记为,该水印的长度由B+tree叶子页键值对列表序列的大小决定。若结点中数据的个数为个,那么水印则为位,并且,第位上数字的取值范围是。这是由阶乘数字系统的性质所决定的。
本发明将所述B+tree叶子页键值对列表序列的大小对应的阶乘数作为数字水印,利用数字水印对原始序列循环右移操作实现数字水印的嵌入。首先,将整个原始序列循环右移次,然后,将循环后的序列的第一位固定,将剩下的序列循环右移次,之后依次类推,直到序列最后一位为止。
B+tree中的叶级结点按照自身的索引机制排好顺序。获取到B+tree叶子页键值对列表序列的大小,记为,根据,将其表示为阶乘数字系统。比如,序列大小为399,则其对应的阶乘数字系统中的数字为“31211”。
下面举例说明水印的嵌入过程:为了便于描述,这里假设获取的序列顺序为,即B+tree叶子页键值对为,即指向,依次类推,指向。其中是即键,是即值。
若嵌入水印为“31211”,水印的第一位上为3,则整个序列先循环右移3次,得到序列;
水印的第二位上为1,则整个序列的第一个结点固定,剩下序列循环右移1次,得到序列;
水印的第三位上为2,则整个序列的前两个结点固定,剩下序列
循环右移2次,得到序列;
水印的第四位上为1,则整个序列的前三个结点固定,剩下序列循环右移1次,得到序列;
最后,水印的第五位上为1,则整个序列的前四个结点固定,剩下序列循环右移1次,得到序列,这个序列则为嵌入水印的序列。
原序列,通过上述水印嵌入后,得到嵌入水印的序列为。
本发明提供的Android系统的数据保护方法,在系统初始化时,通过扫描系统文件查找系统中数据库文件,根据数据库文件获取系统表sqlite_master,根据系统表sqlite_master获取B+tree叶子页,从而获取B+tree叶子页键值对列表序列并对该序列嵌入数字水印,对序列重新排序以生成新序列,从而保护系统中数据。
由于在实际应用时, Android系统数据库操作包括查询和更新,其中更新包括插入数据、删除数据和更新数据。在数据库操作之前,需要对嵌入水印的序列进行数据恢复。进一步地,在所述步骤S200之后还包括:S300、当所述Android系统中的数据库文件有变化时,根据所述数字水印和嵌入数字水印的新序列获取对应的原B+tree叶子页键值对列表序列,得到原数据库文件;
S400、对原数据库文件进行操作,当操作完毕,得到变化后的数据库文件,返回步骤S100。
在实际应用时,系统运行时,通过注册监听数据库变化监听器,当数据库数据变化时,通过回调函数获取到数据库变化,在数据库变化之前,根据水印和嵌入水印的序列获取原序列。
通过Android系统中函数ContentResolver.registerContentObserver(Uri uri,boolean notifyForDescendents, ContentObserver observer)注册监听数据库数据变化,其中参数uri是Uri类型,是需要监听的数据库的uri(统一资源标识符,UniformResource Identifier),与监听数据库的表一一对应,这里通过系统表sqliet_mastar中table字段可获取相应的表名,参数notifyForDescendents需设置为true,即使能监听功能,参数observer则是需要的ContentObserver。当数据有变化时,ContentObserver的onChange(boolean selfChange, Uri uri)回调函数就会被执行。
首先,如上所述,在系统中通过函数ContentResolver.registerContentObserver()注册需要监听的数据库。再次,自定义ContentObserver,在其回调函数onChange()中实现以下功能:1、先根据水印和嵌入水印的序列获取到原序列;2、进行数据库相关操作;3、获取数据库更新的序列;4、对数据库更新的序列嵌入水印。
然后,根据嵌入水印的序列和嵌入的数字水印,得到数据的原始序列。如上述嵌入水印的方法,嵌入水印的序列为,根据嵌入水印为“31211”,则可获取原序列。数据恢复与嵌入水印方法相反,具体方法如下:
嵌入水印的序列为,水印的最后一位上为1,整个序列的前四个结点固定,剩下序列循环左移1次,得到序列,则当前整个序列为;
水印的倒数第二位上为1,整个序列的前三个结点固定,剩下序列循环左移1次,得到序列,则当前整个序列为;
水印的倒数第三位上为2,则整个序列的前两个结点固定,剩下序列
循环左移2次,得到序列,则当前整个序列为;
水印的倒数第四位上为1,则整个序列的前一个结点固定,剩下序列循环左移1次,得到序列,则当前整个序列为;
最后,水印的倒数第五位上为3,则整个序列循环左移3次,得到序列,这个序列则为原序列,进而便可得到原数据库文件。
然后,对数据库进行操作,当数据库操作完毕(即数据库变化后),返回步骤S100,重新获取数据库变化后的B+tree叶子页键值对列表序列,对变化后的数据库嵌入水印,对该序列嵌入数字水印重新排序以生成新序列,从而实现实时动态保护Android系统中的数据。
进一步地,本发明在系统运行时,通过注册监听数据库变化监听器,当数据库数据变化时,通过回调函数获取到数据库变化,在数据库变化之前,根据水印和嵌入水印的序列获取原序列,然后对数据库进行操作,当数据库操作完毕(即数据库变化后),获取数据库变化后的序列,并对该序列嵌入数字水印重新排序以生成新序列,从而实现一种实时动态保护Android系统中的数据的方法。
基于上述Android系统的数据保护方法,本发明还提供了一种Android系统的数据保护系统,如图2所示,所述系统包括:
序列获取模块10,用于获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;具体如步骤S100所述;
水印嵌入模块20,用于对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据;具体如步骤S200所述。
进一步地,所述Android系统的数据保护系统还包括:
序列恢复模块,用于当所述Android系统中的数据库文件有变化时,根据所述数字水印和嵌入数字水印的新序列获取对应的原B+tree叶子页键值对列表序列,得到原数据库文件;具体如步骤S300所述;
更新模块,用于对原数据库文件进行操作,当操作完毕,得到变化后的数据库文件,重新获取数据库文件变化后对应的B+tree叶子页键值对列表序列,并嵌入数字水印重新排序生成对应的新序列;具体如步骤S400所述。
进一步地,所述序列获取模块10包括:
数据库扫描单元,用于扫描Android系统中文件后缀为数据库后缀的文件,得到Android系统中的数据库文件;
系统表获取单元,用于根据所述数据库文件获取对应的系统表;
序列获取单元,用于根据所述系统表获取B+tree叶子页,得到B+tree叶子页键值对列表序列。
进一步地,所述水印嵌入模块20包括:
水印获取单元,用于根据所述B+tree叶子页键值对列表序列的大小得到数字水印;
水印嵌入单元,用于根据所述数字水印对所述B+tree叶子页键值对列表序列进行循环右移操作,得到嵌入数字水印后的新序列。
进一步地,所述水印获取单元,用于将所述B+tree叶子页键值对列表序列的大小对应的阶乘数作为数字水印。
综上所述,本发明提供的一种Android系统的数据保护方法及系统,通过获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据;利用数据库中索引机制在其中嵌入数字水印,从SQLite底层结构角度实现对Android系统中的数据进行保护,更有效地保护了Android系统中的数据,即使被破解也不能得到直接的数据,减少了用户的损失,带来了大大的方便。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.一种Android系统的数据保护方法,其特征在于,包括以下步骤:
S10、获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;
S20、对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据;
所述步骤S10具体包括:
S11、扫描Android系统中文件后缀为数据库后缀的文件,得到Android系统中的数据库文件;
S12、根据所述数据库文件获取对应的系统表;
S13、根据所述系统表获取B+tree叶子页,得到B+tree叶子页键值对列表序列。
2.根据权利要求1所述的Android系统的数据保护方法,其特征在于,在所述步骤S20之后,还包括:
S30、当所述Android系统中的数据库文件有变化时,根据所述数字水印和嵌入数字水印的新序列获取对应的原B+tree叶子页键值对列表序列,得到原数据库文件;
S40、对原数据库文件进行操作,当操作完毕,得到变化后的数据库文件,返回步骤S10。
3.根据权利要求1所述的Android系统的数据保护方法,其特征在于,所述步骤S20具体包括:
S21、根据所述B+tree叶子页键值对列表序列的大小得到数字水印;
S22、根据所述数字水印对所述B+tree叶子页键值对列表序列进行循环右移操作,得到嵌入数字水印后的新序列。
4.根据权利要求3所述的Android系统的数据保护方法,其特征在于,所述步骤S21具体包括:
将所述B+tree叶子页键值对列表序列的大小对应的阶乘数作为数字水印。
5.一种Android系统的数据保护系统,其特征在于,包括:
序列获取模块,用于获取Android系统中的数据库文件,根据所述数据库文件获取对应的B+tree叶子页键值对列表序列;
水印嵌入模块,用于对所述B+tree叶子页键值对列表序列嵌入数字水印,并重新排序生成对应的新序列,以保护所述Android系统中的数据;
所述序列获取模块包括:
数据库扫描单元,用于扫描Android系统中文件后缀为数据库后缀的文件,得到Android系统中的数据库文件;
系统表获取单元,用于根据所述数据库文件获取对应的系统表;
序列获取单元,用于根据所述系统表获取B+tree叶子页,得到B+tree叶子页键值对列表序列。
6.根据权利要求5所述的Android系统的数据保护系统,其特征在于,还包括:
序列恢复模块,用于当所述Android系统中的数据库文件有变化时,根据所述数字水印和嵌入数字水印的新序列获取对应的原B+tree叶子页键值对列表序列,得到原数据库文件;
更新模块,用于对原数据库文件进行操作,当操作完毕,得到变化后的数据库文件,重新获取数据库文件变化后对应的B+tree叶子页键值对列表序列,并嵌入数字水印重新排序生成对应的新序列。
7.根据权利要求5所述的Android系统的数据保护系统,其特征在于,所述水印嵌入模块包括:
水印获取单元,用于根据所述B+tree叶子页键值对列表序列的大小得到数字水印;
水印嵌入单元,用于根据所述数字水印对所述B+tree叶子页键值对列表序列进行循环右移操作,得到嵌入数字水印后的新序列。
8.根据权利要求7所述的Android系统的数据保护系统,其特征在于,所述水印获取单元,用于将所述B+tree叶子页键值对列表序列的大小对应的阶乘数作为数字水印。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510171440.8A CN106156649B (zh) | 2015-04-13 | 2015-04-13 | 一种Android系统的数据保护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510171440.8A CN106156649B (zh) | 2015-04-13 | 2015-04-13 | 一种Android系统的数据保护方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106156649A CN106156649A (zh) | 2016-11-23 |
CN106156649B true CN106156649B (zh) | 2019-09-10 |
Family
ID=57335970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510171440.8A Active CN106156649B (zh) | 2015-04-13 | 2015-04-13 | 一种Android系统的数据保护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106156649B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112016061A (zh) * | 2019-12-16 | 2020-12-01 | 江苏水印科技有限公司 | 一种基于鲁棒水印技术的Excel文档数据保护方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1737794A (zh) * | 2005-06-15 | 2006-02-22 | 武汉大学 | 一种用数字水印技术保护数据库数据版权的方法及其应用 |
-
2015
- 2015-04-13 CN CN201510171440.8A patent/CN106156649B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1737794A (zh) * | 2005-06-15 | 2006-02-22 | 武汉大学 | 一种用数字水印技术保护数据库数据版权的方法及其应用 |
Non-Patent Citations (2)
Title |
---|
基于B+树的索引字段加密;王正飞 等;《中南大学学报》;20091231;第40卷(第6期);第1662-1663页 |
基于B树的数据库防篡改及其恢复机制的研究;裴选;《中国优秀硕士论文库》;20131215(第S2期);参见第11-19页 |
Also Published As
Publication number | Publication date |
---|---|
CN106156649A (zh) | 2016-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9720943B2 (en) | Columnar table data protection | |
Wang et al. | Searchable encryption over feature-rich data | |
Guo et al. | A fragile watermarking scheme for detecting malicious modifications of database relations | |
Mullan et al. | Forensic source identification using JPEG image headers: The case of smartphones | |
US10402386B2 (en) | Method and apparatus for generating index for encrypted field in database | |
CN104794162B (zh) | 实时数据存储与查询方法 | |
US7080091B2 (en) | Inverted index system and method for numeric attributes | |
US7730037B2 (en) | Fragile watermarks | |
JP2010506289A (ja) | 暗号化されたコラムのインデックス構築方法 | |
CN106022143B (zh) | 一种数据库密级标志安全网关操作的方法、装置及系统 | |
Chong et al. | Self-identifying sensor data | |
Kamel et al. | A robust software watermarking for copyright protection | |
CA2461871A1 (en) | An efficient index structure to access hierarchical data in a relational database system | |
Kamran et al. | A comprehensive survey of watermarking relational databases research | |
Iftikhar et al. | A reversible watermarking technique for social network data sets for enabling data trust in cyber, physical, and social computing | |
US20220277098A1 (en) | Method and system for securely storing and programmatically searching data | |
CN106156649B (zh) | 一种Android系统的数据保护方法及系统 | |
CN106250453A (zh) | 基于云存储的数值型数据的密文检索方法及装置 | |
Wang et al. | Enabling efficient approximate nearest neighbor search for outsourced database in cloud computing | |
CN117390118A (zh) | 一种基于区块链的快速数据检索方法及系统 | |
KR100698834B1 (ko) | 인덱스 컬럼 암호화 방법 | |
GB2366405A (en) | Property storage for database structures | |
Waheeb Yaqub et al. | Distortion-free watermarking scheme for compressed data in columnar database | |
US10552466B2 (en) | Search index | |
Yuan et al. | Verify a valid message in single tuple: A watermarking technique for relational database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |