数据库的操作方法及装置的制造方法_3

文档序号:9631547阅读:来源:国知局
[0057]步骤S304:使用扩展的框架层数据库读写接口读写数据库;
[0058]其中扩展的框架层数据库读写接口,是通过在Android原生的数据库读写接口中添加跳转代码,将调用读写流程切换到扩展而来,应用层不关注底层的数据库是否加密,它们调用的接口都Android原生的数据库读写接口。
[0059]步骤S306:生成数据库密钥;
[0060]读取手机中可以唯一标识手机的特征码,使用指定的加密算法生成数据库的密钥,用于创建和打开数据库。
[0061]标识手机的唯一特征码包括但不限于手机串号、蓝牙、Wifi地址等,只要能够持续且唯一标识当前手机即可。
[0062]加密算法可以使用任意一种能够保护密钥的加密算法,此处的加密算法是保证数据库安全的特性之一。
[0063]为了使用方便和提高数据库的操作效率,生成密钥的动作可以在手机开机的时候生成并保存,每次读取数据库的时候直接获取并使用,但必须保证生成的密钥的安全性,防止被非法代码获取。
[0064]步骤S308:检查数据库是否已创建,检查数据库已创建时,执行步骤S312,检查数据库未创建时,执行步骤S310 ;
[0065]实际Android系统中创建数据库是在数据读写前是由专门的操作执行,这里检查数据库是否已创建是为了描述方便加入的步骤,目的是为了更加清晰的描述本发明的思路。
[0066]步骤S310:创建数据库并设置数据库的安全密钥;
[0067]步骤S312:数据库设置密钥试图打开数据库;
[0068]步骤S314:判断数据库安全模块验证设置的密钥是否正确,正确的情况下,执行步骤S316,不正确的情况下,执行步骤S318 ;
[0069]其中数据库安全模块负责数据库的安全性验证(密钥校验)、数据库自身或数据库内容的加/解密。
[0070]其中数据库安全模块可以是处于数据库外部与Android数据库操作框架之间的单独功能模块,也可以是应用数据库自身特性嵌入到数据库内部的功能模块,或者是结合了上述两者特性既有数据库内部安全的交互模块,只要能满足保证数据库数据内容的安全性能要求即可。
[0071]其中验证密钥是否正确,数据库安全模块根据密钥正确与否决定数据库是否允许被打开以便读写数据。
[0072]步骤S316:正常打开数据库,可向数据库读写数据;
[0073]其中向数据库读写数据,如数据库安全模块加密的对象是数据库本身,则数据库安全模块需对数据库文件本身进行解密,并负责将应用层请求的数据写入/读出;如数据库安全模块加密的对象是数据库数据内容,则数据库安全模块需对应用层请求的写输入数据进行加密并存入数据库;对应用层请求读出的数据,从数据库读出后需解密为明文,再提供给应用层。
[0074]不论是对数据库文件自身加密还是对存入数据库的数据内容进行加密,都需要能够有效防止数据库内容被非法读取和识别。
[0075]步骤S318:打开数据库失败,拒绝读写数据;
[0076]其中打开数据库失败,拒绝读写数据,会通过Android框架层将错误的读写返回到应用层供处理。
[0077]需要阐明的是,Android系统对数据库的读写时,不是每次都要打开数据库,而是在读写数据前打开数据库,完成后再关闭数据库。上面的步骤和流程只是为了阐述本发明的思路,不应将之作为Android系统下的数据库读写流程对待。使用Android系统的正常数据库操作流程操作加密数据库的流程和步骤,亦在本发明的保护范围之内。
[0078]SQLite数据库加密是通过SQLite数据库预留的数据库加密接口方式来实现的,SQLite的3.7版本预留的加密接口如下:
[0079](1):sqlite3_key():指定数据库使用的密钥。
[0080](2):sqlite3_rekey():为数据库重新设定密钥用于为数据库重新设定密钥。
[0081](3):sqlite3CodecGetKey():返回数据库的当前密钥。
[0082](4):sqlite3CodecAttach():将密钥及页面编码函数与数据库进行关联。
[0083]上面的加密接口只是提供了数据库加解密的特性,还需要单独提供对数据库数据的加/解密及数据库页面编码等辅助接口,并通过sqlite3CodecAttach与SQLite数据库关联,实现对数据库的加密功能。
[0084]对数据库数据的加/解密接口,可以使用任意一种能够保证数据安全性的加/解密算法。但是加/解密算法需要注意运行效率,过于复杂的加/解密算法虽然能够提供更好的数据安全性能,但会拖累数据库及手机的运行速度,影响用户体验。
[0085]另外,在另一个优选实施例中,因为所有数据库都使用统一的密钥且在同一台手机上唯一,没有数据库密钥重设的需求,sqlite3_rekey接口可以不用实现。
[0086]图4是根据本发明实施例的数据库的操作业务流程流程图,如图4所示,该流程包括如下步骤:
[0087]步骤S402:创建数据库;
[0088]其中创建数据库的操作由应用层发起。
[0089]步骤S404:设置数据库密钥;
[0090]其中设置数据库密钥由Android数据库框架的读写接口扩展来设置,设置的密钥由步骤S306生成,应用层不需干预。
[0091 ] 步骤S406:提供密钥连接数据库;
[0092]其中提供密钥连接数据库由Android数据库框架的读写接口扩展执行,设置的密钥由步骤S306生成,应用层不需干预。
[0093]步骤S408:验证密钥是否正确,密钥正确的情况下,执行步骤S410,密钥不正确的情况下,执行步骤S416;
[0094]其中验证密钥是否正确由SQLitem数据库加密扩展接口执行,并根据验证结果决定数据库是否可以被打开,以便读写数据。
[0095]步骤S410:正常打开数据库;
[0096]其中打开数据库,和Android原生接口操作数据库类似,向应用层返回一个数据库连接,在关闭数据库连接前,应用层可不需再次验证密钥直接使用该连接向数据库中读写数据。
[0097]步骤S412:向数据库读/写数据,并对读/写数据内容进行解密/加密;
[0098]其中对读/写数据内容进行解密/加密,由SQLite数据库加密扩展接口在SQLite数据库内部执行,Android数据库框架读写接口,读/写的都是明文数据。
[0099]步骤S414:数据读写完成,关闭数据库;
[0100]其中关闭数据库由应用层发起,数据库关闭后,步骤S410打开的数据库连接也被关闭,后续再需要向数据库写入数据,应再出执行步骤S410,以获取数据库连接。
[0101]步骤S416:数据库打开失败,拒绝读写。
[0102]其中数据库打开失败,通过Android数据库框架读写接口返回给应用层,告知操作结果。
[0103]图5是根据本发明实施例的数据库密钥生成的业务流程图,如图5所示,该流程包括如下步骤:
[0104]
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1