[发明专利]基于双混沌哈希文件控制的安卓文件密码箱系统有效
| 申请号: | 202011101442.7 | 申请日: | 2020-10-09 |
| 公开(公告)号: | CN112380559B | 公开(公告)日: | 2022-04-29 |
| 发明(设计)人: | 刘晓夏;陈海鹏;刘晋汐 | 申请(专利权)人: | 吉林大学 |
| 主分类号: | G06F21/62 | 分类号: | G06F21/62;G06F21/60;G06F21/33 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 130022 吉*** | 国省代码: | 吉林;22 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 混沌 文件 控制 密码箱 系统 | ||
1.一种基于双混沌哈希文件控制的安卓文件密码箱系统,其特征在于,包括:
Part_1,密码箱系统的数据结构和数学函数定义,包括:文件目录表,文件头,密码箱信息,快表,混沌方程定义,哈希函数定义,转换函数;
Part_2,密码箱系统的基本功能模块,包括:系统初始化模块,快速浏览模块,添加文件模块,修改文件模块,删除文件模块,加密/解密文件模块,备份模块,重建模块,退出模块;
Part_3,用户通过系统初始化模块进行登录,用户成功登录密码箱系统后,读取在安卓系统的内部存储器中的文件目录表和文件头的信息,按照双混沌哈希函数生成的哈希值,建立和初始化在安卓系统的内存中的快表,实现对存储在安卓系统的外部存储器中的文件进行快速浏览、添加文件、修改文件、删除文件、备份系统和文件、重建系统的操作;在用户退出系统时,内存中快表的内容保存到文件目录表和文件头中,销毁内存中的快表,退出密码箱系统;
Part_1密码箱系统的数据结构和数学函数定义,包括:
(1)文件目录表FLT(File List Table),包括
FID:标记当前结点所在文件目录表中的位置,取值范围是正整数,长度占8个字节;
FKey:当前结点的哈希值,长度占8个字节;
Order:标记当前结点在被读入到内存中的位置,取值范围是正整数,长度占8个字节;
Empty:表示当前结点使用状态,长度占4个字节,如果是1表示已经占用,如果是0代表空闲;
文件目录表FLT中每个结点占用28个字节;
(2)文件头FH(File Header),包括
FKey:当前结点的哈希值,长度占8个字节;
FN(File Name):包括文件名和扩展名,长度占20个字节,文件名占16个字节,扩展名占4个字节,对超过16个字节的文件名进行截尾处理,保留文件名前16个字节的数据;
CT(Create Time):文件建立的时间,长度占14个字节,“年”占用4个字节,“月”占用2个字节,“日”占用2个字节,“时”占用2个字节,“分”占用2个字节,“秒”占用2个字节;
FCA(File Certificate Authority):文件使用的数字证书文件名称,长度占10个字节;
FGKC(File Generate Key Code):生成数字证书的秘钥,长度占12个字节;
FEN(File Encrypt Name):加密后的文件名称,长度占10个字节;
FInfo(File Information):文件描述信息,长度占26个字节;
文件头FH中每个结点占用100个字节;
(3)密码箱信息IEB(Information of Encryption Box),包括
CB_FLT:文件目录表FLT的文件名称;
CB_FH:文件头FH的文件名称;
CB_EFDir:外部存储器保存加密文件的目录信息;
CB_NNum:密码箱结点的总数;
(4)快表ICT(Index Cache Table),包括
OrderID:标记当前结点在被读入到内存中的位置,取值范围是正整数,长度占8个字节;
文件目录表FLT中的Fkey,Empty项;
文件头FH中的FN,CT,FCA,FGKC,FEN,FInfo项;
(5)Logistic方程定义
t[n+1]=cp*t[n]*(1-t[n])
控制参数cp(Control Parameter),cp取值是0与4之间的实数,不包括边界值0和4;
t[n]是Logistic方程迭代的时间序列,n代表时间,n取值区间是正整数,t[0]代表初始状态值,t[n]的数值是0与1之间的正实数;
(6)哈希函数定义
哈希函数kValue=Hkey(cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum)
kValue是由哈希函数Hkey生成的哈希值;
cp_1表示第一个Logistic方程的控制参数值;
t[0]_1表示第一个Logistic方程的初始状态值;
cp_2表示第二个Logistic方程的控制参数值;
t[0]_2表示第二个Logistic方程的初始状态值;
系统添加的Logistic方程的控制参数值数字在3.9之后的数字位,即,3.9d1d2,d1和d2是用户添加的数字位;
系统添加的Logistic方程的初始状态值数字在0.5之后的数字位,即,0.5d1d2,d1和d2是用户添加的数字位;
Init_Num表示Logistic方程的初始迭代数,
RNum表示Logistic方程在经过初始迭代数后,获得最后结果需要迭代的数量;
KValue表示为{kval_1,kval_2,...,kval_n}的数字字符串,第一个数字字符是kval_1,最后一个数字字符是kval_n,总数是n个;
哈希函数Hkey的计算过程是:第一个Logistic方程t[n+1]_1=cp_1*t[n]_1*(1-t[n]_1)和第二个Logistic方程t[n+1]_2=cp_2*t[n]_2*(1-t[n]_2)在指定的控制参数和初始状态值下进行初始迭代,迭代次数是Init_Num,获得第一个Logistic方程的迭代值t[Init_Num+1]_1和第二个Logistic方程的迭代值t[Init_Num+1]_2,截取t[Init_Num+1]_1的小数点后最末位数值last[t[Init_Num+1]_1]与t[Init_Num+1]_2的小数点后最末位数值last[t[Init_Num+1]_2],KValue的第一个数字字符取值为last[t[Init_Num+1]_1],第二个数字字符取值为last[t[Init_Num+1]_2];依次迭代,获得的KValue是{last[t[Init_Num+1]_1],last[t[Init_Num+1]_2],last[t[Init_Num+2]_1],last[t[Init_Num+2]_2],...,last[t[Init_Num+RNum]_1],last[t[Init_Num+RNum]_2]};
(7)转换函数strConvert(In String,Out Type Num)
In代表输入变量;
String代表输入的字符串;
Out代表输出变量;
Type代表输出变量的类型,分别是整数类型int,实数类型float,布尔类型bool;
Num代表输出的具有Type类型的变量;
转换函数strConvert的规则是:如果输出类型是int、float,需要把String转换为ASCII码,取每个字符的ASCII码数值的最后一位数字,组合成为int、float;如果溢出,采用截尾的方法处理;如果输出类型是bool,当String不为空时,Num取值为真,否则,Num取值为假;
Part_2,密码箱系统的功能模块,包括:
(1)系统初始化模块
当用户第一次登录本系统时,本系统需要设置密码才能使用,并初始化系统;
用户设置的用于数字证书的哈希值长度是128*2n字节,n是正整数;
用户设置的初始密码转换为128*2n字节哈希值,具体过程是:用户设置的参数通过转换函数strConvert进行转换,用户需要设置cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum,和设置哈希值长度128*2n字节中n的数值,Init_Num的初始值是1024,RNum的初始值是128,计算kValue=Hkey(cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum),kValue作为用户登录系统验证的数字证书存储在内部存储器中;
对文件目录表FLT进行初始化,用户设定系统中结点的总数(NumNodes),对每一个结点进行初始化,FID按照顺序进行编号,Order的值均设置为0,Empty的值均设置为0;
第一个结点的FKey计算利用用户登录验证的数字证书中的最后8个字节,转化为参数cp_1,t[0]_1,cp_2,t[0]_2,RNum=4,计算kValue=Hkey(cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum),把kValue赋值给FKey;由第一个结点的FKey生成第二个结点的参数cp_1,t[0]_1,cp_2,t[0]_2,RNum=4,计算kValue;如果当前kValue与第一个结点的FKey不同,把kValue赋值给第二个结点的FKey,如果当前kValue与已经生成的FKey的值相同,再次迭代Hkey生成kValue,直到生成与已经生成的FKey的值不相同;依次进行,直到每个结点的FKey初始化完成;
对密码箱信息IEB文件进行初始化,设定文件目录表FLT的文件名称存储在CB_FLT中;文件头FH的文件名称存储在CB_FH中;外部存储器保存加密文件的目录信息存储在CB_EFDir中;把结点的总数NumNodes赋值给CB_NNum保存;
如果用户登录系统,用户输入密码,密码通过转换函数strConvert转换为cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum;Init_Num的初始值是1024,RNum的初始值是128,计算kValue=Hkey(cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum),kValue与用户登录验证的数字证书进行比较,如果正确,用户登录系统成功,用户能够使用密码箱系统提供的模块功能;否则,提示验证失败,关闭密码箱系统;
用户登录成功后,初始化快表ICT,打开密码箱信息IEB文件,读取文件目录表FLT,文件头FH的内容,按照文件目录表FLT的Order的序号顺序建立OrderID,在建立的快表结点中,仅包括Empty项为1的结点,拷贝文件目录表FLT中对应的Fkey,Empty项,以及文件头FH中的对应项FN,CT,FCA,FEN,FGKC,FInfo项至快表对应的结点中;
(2)快速浏览模块
快速浏览模块的功能是用户在密码箱系统浏览框中选择快表所显示的文件列表进行加密文件的快速浏览;
当快表中当前结点的FCA项和FGKC项均不为0时,用户选择浏览当前的加密文件时,系统利用FCA数字证书文件启动解密文件模块,对当前的文件进行解密,将解密后的文件保存在临时文件中,显示解密文件的内容,当用户关闭当前窗口时,临时文件中的内容将被清空;
当快表中当前结点的FCA项和FGKC项均为0时,设定临时文件TemCA和临时文件TemFile,打开外部存储器中的FEN文件,读取文件FEN的前8个字节,取得数字证书的长度CALen,再读取文件FEN当前位置开始的CALen长度内容拷贝到临时文件TemCA中,把文件FEN剩余内容拷贝至临时文件TemFile中,利用临时文件TemCA内的数字证书内容对临时文件TemFile进行解密操作,显示解密文件的内容,当用户关闭当前窗口时,临时文件中的内容将被清空;
快速浏览模块提供对当前浏览框中的文件进行位置重置功能,用户选择需要的文件,拖动到指定的位置,快表ICT的OrderID项的序号将重新进行排序,在退出系统时,快表ICT的OrderID项新的位置信息将被保留在文件目录表FLT中的对应项Order中,在下次启动时,将保留最后一次快表ICT中浏览的顺序;
(3)添加文件模块
添加文件模块的功能将需要加密的文件保存在密码箱中,具体步骤是:首先,把当前快表中的结点总数与系统中结点的总数CB_NNum进行比较;如果相等,系统已经没有空闲空间,不能添加文件;否则,遍历文件目录表FLT中的结点,找到第一个Empty项是空闲的结点,打开文件头FH文件,在文件末尾添加一个新的结点,并按照文件目录表FLT中的FKey初始化文件头FH中FKey项的信息,把文件目录表FLT中FKey的值赋值给文件头FH的FKey项,并把文件目录表FLT中Order的值设置为当前快表结点的总数加1,把文件目录表FLT中Empty的值设置为占用;
文件头FH的当前结点的FN设置为需要加密的文件名,CT设置为当前的系统时间,利用转换函数strConvert,把当前的时间转化为Hkey(cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum)的参数;当前时间的秒转换为cp_1,当前时间的分转换为cp_2,当前时间的时转换为t[0]_1,当前时间的日转换为t[0]_2,当前时间的年转换为Init_Num,RNum的初始值是128,计算kValue=Hkey(cp_1,t[0]_1,cp_2,t[0]_2,Init_Num,RNum),kValue作为加密的秘钥存储在内部存储器中的FCA文件名中,FCA文件名由用户指定,当出现重复时,提醒用户修改;将当前时间的秒,分,时,日,年转换后存储在FGKC中;FEN文件名由用户指定,当出现重复时,提醒用户修改;用户输入FInfo文件描述信息;新的结点加入快表ICT中,按照文件目录表FLT,文件头FH的内容,初始化快表ICT中各项;使用FCA的数字证书,利用加密模块对文件进行加密处理,并把加密后的文件FEN添加到手机外部存储器中;
(4)修改文件模块
修改文件模块提供对快表中的文件进行修改的功能,对选择的当前结点的FN,CT,FEN,FCA和FInfo项进行修改;
修改文件模块实现添加授权的版权文件功能;具体为:首先,把当前快表中的结点总数与系统中结点的总数CB_NNum进行比较;如果相等,系统已经没有空闲空间,不能添加版权文件;否则,在快表中新建空节点,当前结点的OrderID的序号值为快表的总结点数加1,遍历文件目录表FLT中的结点,找到第一个Empty项是空闲的结点,并把文件目录表FLT中FKey的值赋值给快表中的FKey项,把文件目录表FLT中Empty的值设置为占用;用户设置FN,CT,设置FGKC项为全0,设置FCA项全为0,设置FEN,用户输入FInfo文件描述信息,拷贝文件到CB_EFDir目录下保存;
(5)删除文件模块
删除文件模块提供对密码箱中的文件进行删除的操作,具体为:首先,按照快表中当前结点的FKey项,检索文件目录表FLT中对应结点FKey项,修改文件目录表FLT中的对应结点信息,Order设置为0,Empty设置为空闲;在IEB文件中CB_EFDir外部存储器保存加密文件的目录中找到FEN的文件名删除;如果FCA的值不全为0,将内部存储器中的FCA的文件名的数字证书文件删除;删除快表中的当前结点,调整快表ICT的OrderID项的序号,重新进行排序;
(6)加密/解密文件模块
加密/解密文件模块是密码箱系统实现文件保护的功能模块;文件通过加密处理被保存到密码箱中,加密的文件被保存到外部存储器中;
本系统所使用密码系统是对称加密,加密和解密过程使用相同的秘钥;
设定秘钥集合Key={K_1,k_2,...,k_n},k是秘钥序列,n是秘钥集合长度;
源文件集合Text={t_1,t_2,...,t_m},t是源文件字符流,m是源文件长度;
加密/解密文件的集合Coding={c_1,c_2,...,c_m},c是加密/解密文件的字符流,m是加密/解密文件的长度;
加密/解密过程:c_i=t_i xor k_i,代表第i个字符加密/解密过程,xor是异或操作;
当m小于等于n时,使用m个秘钥完成加密/解密源文件过程;
当m大于n时,设m=p*n+q,对Text中前p个长度的字符流重复使用Key进行加密/解密过程,剩余的q个字符,选取Key中前q个秘钥进行加密/解密操作;
本系统中的秘钥集合Key取自快表中FCA文件中的数字证书,每一个密码箱系统中的加密文件对应一个数字证书文件;通过FCA文件中的数字证书生成秘钥集合Key,对密码箱中的文件进行加密/解密处理;
(7)备份模块
备份模块提供对密码箱文件的整体备份和单独的文件备份功能;
整体备份包括:用户把存储在手机的外部存储器的加密文件保存到外部存储设备中,和备份文件头FH文件;
单独的文件备份为用户选择当前需要备份的文件,读取当前结点的FCA数字证书文件和对应的CB_EFDir外部存储器保存加密文件的目录下的加密文件FEN进行输出备份;具体操作过程为:设定输出的文件名OutF,打开文件OutF进行写操作,文件的前8个字节设定FCA数字证书的长度,把数字证书内容写入文件OutF,把FEN的文件内容写入文件OutF;
(8)重建模块
重建模块提供根据正确的密码建立用户数字证书,重建文件目录表FLT;用户把备份的文件头FH文件拷贝至外部存储器保存加密文件的目录;打开文件头FH,反向初始化文件目录表FLT;具体步骤是:建立文件目录表FLT,并按顺序初始化FID,每个结点的Order的值设置为0,Empty的值设置为空闲;按照用户登录验证的数字证书内容建立第一个结点FKey的值,依次建立每个结点的FKey的值;如果当前产生的FKey的值与已经产生的值相同,再次迭代Hkey,直到生成与已经产生的FKey的值不相同;依次读取在文件头FH的每个结点内容,按照FKey的值的顺序反向设置文件目录表FLT的Order的值,设置文件目录表FLT对应的Empty为占用;按照FGKC项恢复数字证书,建立数字证书文件,保存数字证书为文件头FH的FCA项,并存储到内部存储器中;当FGKC项和FCA项全为0时,FEN是持有者分发的版权文件;
(9)退出模块
本系统在安卓系统内存中运行,快表实现快速读取密码箱文件信息,对文件进行控制的功能;当用户退出系统时,快表中每个结点的信息按照FKey的关键字,依次写入文件目录表FLT和文件头FH中对应的相同FKey的关键字结点中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于吉林大学,未经吉林大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011101442.7/1.html,转载请声明来源钻瓜专利网。





