本发明属于移动设备数据库加密技术领域,具体涉及一种电力行业优化移动设备数据库加密效率的方法。
背景技术:
电力行业作为我国重要的能量生产行业,其信息系统的安全性更是需要企业甚至政府的重视。电力行业移动设备上的数据安全性不仅关系到企业和人们的经济利益和基本生活,还与国家的安全息息相关,因此,我们需要给机密数据进行加密来保证其安全性。为了保障移动设备上电网数据的安全和提高移动设备上加密数据库的效率,保证电网数据不被丢失或被盗取,开展移动设备数据库加密技术的研究,具有重要的科学意义和应用价值。
技术实现要素:
本发明克服现有技术存在的不足,所要解决的技术问题为:提供一种能够提高程序安全性和优化移动设备数据库加密效率的方法。
本发明提供的一种电网项目移动端机型适配实现方法,包括:
S101 、修改SQLite源代码,追加对数据库进行加密的功能,实现数据库密码访问,形成加密性数据库;
S102 、将加密性数据库作为DBMS的一个外层工具,将要操作的数据库的密码代入加密性数据库进行加密操作;
S103 、将进行加密操作后的加密性数据库引入各移动平台中,进行解密操作;
S104 、进行程序部署。
所述步骤S101中对SQLite源代码的修改是在不改变原生SQLite数据库轻量级、以及跨平台原有属性的基础上进行的。
所述步骤S102中的加密操作包括密匙产生和AES算法加密。
所述密匙产生的流程为:首先获取加密性数据库加密时的时间信息,然后将时间信息转化为一个整数,接着将这个整数作为伪随机函数的种子得到一个伪随机数,再将伪随机数和要操作的数据库的密码异或产生一个最终的算法密匙。
所述步骤S103中解密操作采用AES算法解密。
本发明针对移动设备上数据库加密效率低的问题,提供了一种能够提高程序安全性和优化移动设备数据库加密效率的方法,在不改变SQLite数据库轻量级、以及跨平台原有属性的基础上,追加对数据库进行加密的功能,实现数据库密码访问,形成加密性数据库,同时将加密性数据库作为DBMS的一个外层工具,降低了加密过程对CPU资源的消耗,大大提高了移动设备对数据库进行操作的效率。另外,加密密匙的产生基于数据库在进行加密时的时间信息是唯一且确定的,以此增加了加密密匙的安全性,进而确保了程序的安全性。
附图说明
下面结合附图对本发明做进一步详细的说明;
图1为本发明中密匙产生的流程示意图;
图2为本发明中AES算法加密的流程示意图;
图3为本发明中AES算法解密的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的本发明提供的一种优化移动设备数据库加密效率的方法,包括:
S101 、修改SQLite源代码,追加对数据库进行加密的功能,实现数据库密码访问,形成加密性数据库;
S102 、将加密性数据库作为DBMS的一个外层工具,将要操作的数据库的密码代入加密性数据库进行加密操作;
S103 、将进行加密操作后的加密性数据库引入各移动平台中,进行解密操作;
S104 、进行程序部署。
所述步骤S101中对SQLite源代码的修改是在不改变原生SQLite数据库轻量级、以及跨平台原有属性的基础上进行的。
所述步骤S102中的加密操作包括密匙产生和AES算法加密。
所述密匙产生的流程为:首先获取加密性数据库加密时的时间信息,然后将时间信息转化为一个整数,接着将这个整数作为伪随机函数的种子得到一个伪随机数,再将伪随机数和要操作的数据库的密码异或产生一个最终的算法密匙。
所述步骤S103中解密操作采用AES算法解密。
数据库加密功能的安全性依赖于密匙,好的密匙不容易被轻易破解,图1展示了本发明中密匙产生的过程,数据库在加密时的时间信息是唯一和确定的,所以可以在每条记录转化时增加时间字段,并对时间进行处理,把时间信息中的年,月,日,小时,分,秒,毫秒信息进行处理得到一个整数型,把这个数作为函数void srand(unsigned int seed)中的伪随机数种子,进而得到一个伪随机数,再把伪随机数和要操作的数据库的密码进行异或处理,结果为算法密匙,以此可以增加密匙的安全性。
数据加密的过程,即是明文与算法密匙进行操作生存密文的过程,密匙产生后利用AES算法进行加密,图2展示了AES算法的加密流程,读进明文、读进密匙后产生轮子密匙,之后进入AES加密,在AES算法的加密流程中除了初始轮和最后一轮加密步骤外,其他加密轮均用SubByte ,ShiftRow ,MixCloumn 和AddRoundKey 四个变换,而初始轮只采用AddRoundKey变换,最后一轮使用SubByte ,ShiftRow 和AddRoundKey变换。
SubByte 字节代替变换 是一个基于S盒的非线性置换,是一个独立作用于状态字节的非线性变换,它用于将输入或中间态的每一个字节通过一个简单的查表操作,将其映射为另一个字节。映射方法是:把输入字节的高4位作为S盒的行值,低四位作为列值,然后取出对应行和列的元素作为输出。
ShiftRow 行位移变换 是AES算法中的线性运算中的一部分。
MixColum 列混合变换 在MixColumn()方法的作用下,把State[]的列看作是域GF(28)上的多项式,并且封一个固定的多项式b(x)做乘法,如果溢位,则再模除x4+1。
AddRoundKey 轮密匙加变换,及用当前的State[]与由密匙扩展生成的相应子密匙进行逐位异或运算即可。
将进行加密操作后的加密性数据库引入各移动平台,当需要使用移动平台操作加密性数据库里的数据时,需要对其进行解密操作,解密操作是加密操作的逆向过程,为了使解密过程具有一些好的运算性质,使解密运算具有与加密运算相同的运算顺序,图3展示了AES算法的解密过程,其中除了AddRoundKey 轮密匙加变换不变,SubByte 字节代替变换,ShiftRow 行位移变换和MixColum 列混合变换都要进行求逆变换,即InvSubByte,InvShifRows 和InvMixColumn。
加密性数据库在移动平台中解密完成后,即可进行程序的部署。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。