CN108197456A - 一种设备数据的缓存方法及装置 - Google Patents
一种设备数据的缓存方法及装置 Download PDFInfo
- Publication number
- CN108197456A CN108197456A CN201810038067.2A CN201810038067A CN108197456A CN 108197456 A CN108197456 A CN 108197456A CN 201810038067 A CN201810038067 A CN 201810038067A CN 108197456 A CN108197456 A CN 108197456A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- offset
- cipher key
- intelligent cipher
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/34—User authentication involving the use of external additional devices, e.g. dongles or smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种设备数据的缓存方法及装置,涉及计算机技术领域,本发明使用根据智能密钥设备中的偏移数据分段的读取智能密钥设备中的设备数据并分段的写入缓存区的技术方案,若在读取或写入过程中被打断,可以根据智能密钥设备中的偏移数据判断出智能密钥设备中的哪些数据已写入缓存区,哪些未写入缓存区,若缓存区中已有与偏移数据对应的缓存数据,则根据缓存区中的缓存数据得到设备数据;若缓存区中无与偏移数据对应的缓存数据,则根据智能密钥设备中的偏移数据读取智能密钥设备中的设备数据;和现有技术相比缩短了读取智能密钥设备中的设备数据的时间,用户体验好。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种设备数据的缓存方法及装置。
背景技术
随着互联网及业务系统应用的逐步深入,人们对网上信息及业务系统的安全防护问题日益突出。为了保证网络平台和系统平台的安全运行,我们迫切需要做好登录安全身份认证工作,由此诞生了智能密钥设备。智能密钥设备是一种硬件设备,可以通过USB接口或蓝牙接口或音频接口或其他接口与移动终端连接使用。现有技术中,在使用智能密钥设备时,移动终端需从智能密钥设备中读取数据,而智能密钥设备中的数据较大且数量较多,耗时较长,为解决这一问题,移动终端可以将读取到的智能密钥设备中的数据一次性读取后存入在自身的缓存中,之后再使用数据时,从自身的缓存中获取所需数据;但是这种方法也存在以下弊端:
对于具有蓝牙接口或者音频接口的智能密钥设备而言,基于蓝牙通道和音频通道的特性,一次性从智能密钥设备中将所有数据都读出时耗时较长,用户体验差;并且若读取过程中被打断(例如移动终端收到来电或者接收到信息),还需重新读取。
发明内容
本发明提供了一种设备数据的缓存方法及装置,解决了上述技术问题。
本发明提供了一种设备数据的缓存方法,包括:
步骤s0:等待接收来自移动终端上的应用程序发送的指令,若指令为第一指令,则执行步骤s1;
步骤s1:获取已连接到移动终端的智能密钥设备中的偏移数据;
步骤s2:根据所述偏移数据得到数据索引;判断缓存区中是否存在与所述数据索引对应的缓存数据,如果是,则执行步骤s3;否则,执行步骤s4;
步骤s3:根据所述缓存区中的与所述数据索引对应的缓存数据得到设备数据,执行步骤s5;
步骤s4:根据所述偏移数据从智能密钥设备中读取设备数据;根据所述设备数据得到缓存数据,将所述缓存数据与所述数据索引建立对应关系,并将所述缓存数据写入到缓存区中,执行步骤s5;
步骤s5:判断所述设备数据是否为目标设备数据,如果是,则根据所述目标设备数据执行相应操作,得到第一应答;将第一应答返回给所述应用程序;否则,报错。
本发明还提供了一种设备数据的缓存装置,包括:第一接收模块、第一获取模块、第二获取模块、第一判断模块、第三获取模块、第一读取模块、第四获取模块、第一写入模块、第二判断模块、第一操作模块、第一返回模块和第一报错模块;
所述第一接收模块,用于接收来自移动终端上的应用程序发送的第一指令;
所述第一获取模块,用于获取已连接到移动终端的智能密钥设备中的偏移数据;
所述第二获取模块,用于根据所述第一获取模块获取到的所述偏移数据得到数据索引;
所述第一判断模块,用于判断所述缓存装置中的缓存区中是否存在与所述第二获取模块获取到的所述数据索引对应的缓存数据;
所述第三获取模块,用于当所述第一判断模块判断为是后,根据所述缓存区中的与所述数据索引对应的缓存数据得到设备数据;
所述第一读取模块,用于当所述第一判断模块判断为否后,根据所述第一获取模块获取到的偏移数据从智能密钥设备中读取设备数据;
所述第四获取模块,用于根据所述第一读取模块读取到的设备数据得到缓存数据;
所述第一写入模块,用于将所述第四获取模块获取到的所述缓存数据与所述第二获取模块得到的数据索引建立对应关系,并将所述第四获取模块获取到的所述缓存数据写入到缓存区中;
所述第二判断模块,用于判断所述第三获取模块获取到的所述设备数据或者所述第一读取模块读取到的设备数据是否为目标设备数据;
所述第一操作模块,用于当所述第二判断模块判断为是后,根据所述目标设备数据执行相应操作,得到第一应答;
所述第一返回模块,用于将所述第一操作模块得到的第一应答返回给所述应用程序;
所述第一报错模块,用于当所述第二判断模块判断为否后,报错。
本发明的有益效果:本发明提供了一种设备数据的缓存方法及装置,本发明使用根据智能密钥设备中的偏移数据分段的读取智能密钥设备中的设备数据并分段的写入缓存区的技术方案,若在读取或写入过程中被打断,可以根据智能密钥设备中的偏移数据判断出智能密钥设备中的哪些数据已写入缓存区,哪些未写入缓存区,若缓存区中已有与偏移数据对应的缓存数据,则根据缓存区中的缓存数据得到设备数据;若缓存区中无与偏移数据对应的缓存数据,则根据智能密钥设备中的偏移数据读取智能密钥设备中的设备数据;和现有技术相比缩短了读取智能密钥设备中的设备数据的时间,用户体验好。
附图说明
图1为本发明实施例1提供的一种设备数据的缓存方法的流程图;
图2为本发明实施例2提供的一种设备数据的缓存方法的流程图;
图3为本发明实施例3提供的一种设备数据的缓存方法中的功能模块的操作流程图;
图4为本发明实施例3提供的一种设备数据的缓存方法中的读写模块的操作流程图;
图5为本发明实施例4提供的一种设备数据的缓存装置。
具体实施方法
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供了一种设备数据的缓存方法,如图1,包括:
步骤s0:等待接收来自移动终端上的应用程序发送的指令,若指令为第一指令,则执行步骤s1;
步骤s1:获取已连接到移动终端的智能密钥设备中的偏移数据;
步骤s2:根据偏移数据得到数据索引;判断缓存区中是否存在与数据索引对应的缓存数据,如果是,则执行步骤s3;否则,执行步骤s4;
步骤s3:根据缓存区中的与数据索引对应的缓存数据得到设备数据,执行步骤s5;
步骤s4:根据偏移数据从智能密钥设备中读取设备数据;根据设备数据得到缓存数据,将缓存数据与数据索引建立对应关系,并将缓存数据写入到缓存区中,执行步骤s5;
步骤s5:判断设备数据是否为目标设备数据,如果是,则根据目标设备数据执行相应操作,得到第一应答;将第一应答返回给应用程序;否则,报错。
本实施例中,步骤s1可以具体为:获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;
根据偏移数据得到数据索引,具体为:根据当前偏移数据得到数据索引;
步骤s5具体包括:
步骤a1:判断设备数据是否为目标设备数据,如果是,则根据目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;否则,执行步骤a2;
步骤a2:判断当前偏移数据是否为最后一组偏移数据,如果是,则报错并清空缓存区;否则,将当前偏移数据的下一组偏移数据作为当前偏移数据;返回步骤s2。
进一步地,判断设备数据是否为目标设备数据,具体为:获取设备数据中的数据类型标识:
当数据类型标识为第二标识时,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据,执行步骤a2;当数据类型标识为第一标识时,获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据和对比数据是否匹配,如果是,则将数据类型标识为第一标识的设备数据作为目标设备数据,继续;否则,执行步骤a2。
本实施例中,步骤s1还可以具体为:获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;
根据偏移数据得到数据索引,具体为:根据当前偏移数据得到数据索引;
步骤s5具体包括:
步骤b1:判断当前偏移数据是否为最后一组偏移数据,如果是,则执行步骤b2;否则,将当前偏移数据的下一组偏移数据作为当前偏移数据;返回步骤s2;
步骤b2:判断获取到的所有设备数据中是否存在目标设备数据,如果是,则根据目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;否则报错并清空缓存区。
相应地,判断设备数据是否为目标设备数据,具体为:获取设备数据中的数据类型标识,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据;获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据与对比数据是否匹配,如果是,则将数据类型标识为第一标识的设备数据作为目标设备数据;否则,判断设备数据不是目标设备数据。
本实施例中,将缓存数据写入到缓存区中之后,还包括:将从智能密钥设备中读取到的写入次数标识与缓存区对应保存;
步骤s1之前还包括:
步骤c1:获取自身保存的与缓存区对应的写入次数标识;
步骤c2:从智能密钥设备中读取写入次数标识,判断从智能密钥设备中读取到的写入次数标识与自身保存的与缓存区对应的写入次数标识是否匹配,如果是,则执行步骤s1;否则清空缓存区,返回步骤s1。
本实施例中,根据缓存区中的与数据索引对应的缓存数据得到设备数据,具体为:将缓存区中的与数据索引对应的缓存数据作为设备数据;根据设备数据得到缓存数据,具体为:将设备数据作为缓存数据。
本实施例中,根据缓存区中的与数据索引对应的缓存数据得到设备数据,可以具体包括:
步骤g1:根据第一预设算法对缓存数据解密得到第一解密数据,从第一解密数据中获取摘要比对数据和待验数据;
步骤g2:根据摘要算法对待验数据进行摘要计算得到第二摘要值,判断第二摘要值和摘要比对数据是否匹配,如果是,则将待验数据作为设备数据,执行步骤s5;否则,清空缓存区,执行步骤s4;
根据设备数据得到缓存数据,可以具体包括:
步骤h1:对设备数据进行摘要计算得到第一摘要值,将第一摘要值和设备数据进行拼接,得到第一拼接数据;
步骤h2:加密第一拼接数据得到缓存数据。
本实施例中,判断设备数据是否为目标设备数据,可以具体为:获取设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果,判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据,如果是,则判断出设备数据为目标设备数据;否则,判断出设备数据不是目标设备数据。
进一步地,判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据之前,还包括:根据解析结果,判断有效数据是否合法,如果是,则继续;否则,判断出设备数据不是目标设备数据。
本实施例中,获取设备数据中的有效数据之前还包括:获取设备数据中的数据类型标识,判断设备数据的数据类型是否为设备数据类型,如果是,则获取设备数据中的有效数据;否则,判断出设备数据不是目标设备数据。
本实施例中,根据目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序,具体包括:
步骤d1:根据目标设备数据得到签名密钥标识、待签数据和签名算法,向智能密钥设备发送包括签名密钥标识、待签数据和签名算法的指令,得到智能密钥设备返回的签名结果;
步骤d2:对签名结果验签,如果验证通过,则将包括签名结果的签名应答作为第一应答返回给应用程序;否则,报错,返回步骤s0。
本实施例中,判断设备数据是否为目标设备数据,还可以具体为:获取设备数据中的比对标识,判断设备数据中的比对标识是否与第一指令中的比对标识相匹配,如果是,则判断出设备数据为目标设备数据;否则,判断出设备数据不是目标设备数据。
相应地,根据目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序,还可以具体为:从目标设备数据中获取签名密钥标识、待签数据和签名算法,向智能密钥设备发送包括签名密钥标识、待签数据和签名算法的指令,得到智能密钥设备返回的签名结果;并对签名结果验签,如果验证通过,则将包括签名结果的签名应答作为第一应答返回给应用程序;否则,报错,返回步骤s0。
本实施例中,步骤s0中还可以包括:当接收到来自应用程序的第二指令时,执行步骤k3;
步骤k3:根据第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据,将缓存数据写入到缓存区中,并将缓存数据和数据索引建立对应关系;根据第二指令中的偏移数据,将第二指令中的待写入数据写入到智能密钥设备中;向应用程序返回第二应答。
进一步地,当接收到来自应用程序的第二指令时,执行步骤k3之前,还包括;
步骤k1:获取自身保存的与缓存区对应的写入次数标识;
步骤k2:从智能密钥设备中读取写入次数标识,判断从智能密钥设备中读取到的写入次数标识与自身保存的与缓存区对应的写入次数标识是否匹配,如果是,执行步骤k3;否则,清空缓存区,执行步骤k3;
第二指令中的待写入数据写入到智能密钥设备中之后,还包括:从智能密钥设备中读取写入次数标识;将写入次数标识与缓存区对应保存。
本实施例中,偏移数据中还可以包括:偏移数据类型;
步骤s1之前还包括:根据第一指令获取设备数据类型;
步骤s1具体为:获取已连接到移动终端的智能密钥设备中的偏移数据类型为设备数据类型的偏移数据。
本实施例中,步骤s5中判断为否后,还包括:清空缓存区。
本实施例中,步骤s2还可以具体包括:
步骤s21:根据当前偏移数据计算当前文件名称;将当前文件名称作为数据索引;
具体地,根据当前偏移地址和当前偏移长度计算当前文件名称;将当前文件名称作为数据索引;
步骤s22:判断缓存区中与智能密钥设备的序列号对应的文件缓存目录下是否存在与当前文件名称对应的文件,如果是,则执行步骤s3;否则,执行步骤s4;
相应地,步骤s4具体包括:
步骤s41:根据当前偏移数据计算得到当前文件名称,在缓存区中的与智能密钥设备的序列号对应的文件缓存目录下创建文件,并以当前文件名称命名;根据当前偏移数据从智能密钥设备中读取设备数据。
步骤s42:根据设备数据得到缓存数据,并将缓存数据写入到以当前文件名称命名的文件中。
本实施例提供了一种设备数据的缓存方法,本方法使用根据智能密钥设备中的偏移数据分段的读取智能密钥设备中的设备数据并分段的写入缓存区的技术方案,若在读取或写入过程中被打断,可以根据智能密钥设备中的偏移数据判断出智能密钥设备中的哪些数据已写入缓存区,哪些未写入缓存区,若缓存区中已有与偏移数据对应的缓存数据,则根据缓存区中的缓存数据得到设备数据,;若缓存区中无与偏移数据对应的缓存数据,则根据智能密钥设备中的偏移数据读取智能密钥设备中的设备数据;和现有技术相比缩短了读取智能密钥设备中的设备数据的时间,用户体验好。
实施例2
本实施例提供了一种设备数据的缓存方法,如图2所示,包括:
步骤101:等待接收来自应用程序的指令,当接收到第一指令时,执行步骤102;当接收到第二指令时,执行步骤115;
本实施例中,应用程序安装在移动终端上。
具体地,等待接收来自应用程序的指令,当通过第一接收接口接收到第一指令时,执行步骤102;当通过第二接收接口接收到第二指令时,执行步骤115;
本步骤还可以具体为,等待接收来自应用程序的指令,当接收到指令时,解析指令,获取指令中的指令头,根据指令头判断指令的类型,若接收到第一指令时,执行步骤102;若接收到第二指令时,执行步骤115;
本实施例中,第一指令为需要根据智能密钥设备中的数据执行相应操作的指令;可以但不限于为签名指令、获取证书指令等。第二指令为向智能密钥设备中写入数据的相应指令,可以但不限于为写证书指令。
步骤102:检测自身的缓存区中是否存在与智能密钥设备的序列号对应的文件缓存目录,如果是,则执行步骤103;否则,执行步骤110;
步骤103:从与智能密钥设备的序列号对应的文件缓存目录中获取写入次数标识;
步骤104:判断智能密钥设备中的写入次数标识与从与智能密钥设备对应的文件缓存目录中获取的写入次数标识是否匹配,如果是,则执行步骤105;否则,清空与智能密钥设备的序列号对应的文件缓存目录下的文件,将智能密钥设备的偏移表中的第一偏移数据作为当前偏移数据,执行步骤111;
本步骤之前,还包括:从智能密钥设备中获取文件写入次数标识。
步骤104判断为否后,还可以清空与智能密钥设备的序列号对应的文件缓存目录,执行步骤110;
步骤105:将智能密钥设备的偏移表中的第一偏移数据作为当前偏移数据;
本实施例中,将智能密钥设备的偏移表中的第一偏移数据作为当前偏移数据之前,还包括:从与自身连接的智能密钥设备中读取偏移表,从偏移表中读取包括第一偏移地址和第一偏移长度的第一偏移数据。
具体地:将智能密钥设备的偏移表中的第一偏移数据中的第一偏移地址作为当前偏移地址;将第一偏移数据中的第一偏移长度作为当前偏移长度。
步骤106:根据当前偏移数据计算当前文件名称;
具体地,根据当前偏移地址和当前偏移长度计算当前文件名称;
步骤107:判断与智能密钥设备的序列号对应的文件缓存目录下是否存在与当前文件名称对应的文件,如果是,则执行步骤108;否则,执行步骤111;
步骤108:从与当前文件名称对应的文件中读取缓存数据,并根据缓存数据得到设备数据;
步骤109:判断设备数据是否为第一指令所需的目标设备数据,如果是,则根据第一指令所需的目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;返回步骤101;否则,将当前偏移数据的下一个偏移数据作为当前偏移数据,返回步骤106;
将当前偏移数据的下一个偏移数据作为当前偏移数据之前,还包括:判断当前偏移数据是否为最后一组偏移数据,如果是,则向应用程序报错,返回步骤101;否则,将当前偏移数据的下一个偏移数据作为当前偏移数据,返回步骤106。
本实施例中,可选地,步骤108之后,还可以将当前偏移数据的下一个偏移数据作为当前偏移数据,返回步骤106;相应的;步骤109具体为:判断获取到的所有设备数据中是否存在第一指令所需的目标设备数据,如果是,则将则根据有第一指令所需的目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;返回步骤101;否则,向应用程序报错,返回步骤101;对应地,将当前偏移数据的下一个偏移数据作为当前偏移数据之前,还包括:判断当前偏移数据是否为最后一组偏移数据,如果是,则执行步骤109;否则,将当前偏移数据的下一个偏移数据作为当前偏移数据,返回步骤106。
步骤110:创建与智能密钥设备的序列号对应的文件缓存目录;将智能密钥设备的偏移表中的第一偏移数据作为当前偏移数据;
本实施例中,偏移表中包括多组偏移数据,每组偏移数据包括偏移地址和偏移长度。
本步骤之前,还包括:从与自身连接的智能密钥设备中读取偏移表,从偏移表中读取包括第一偏移地址和第一偏移长度的第一偏移数据。
步骤111:根据当前偏移数据计算得到当前文件名称,在与智能密钥设备的序列号对应的文件缓存目录下创建文件,并以当前文件名称命名;根据当前偏移数据从智能密钥设备中读取设备数据。
步骤112:根据设备数据得到缓存数据,并将缓存数据写入到以当前文件名称命名的文件中;
本步骤可以具体为步骤1121:将设备数据作为缓存数据,并将缓存数据写入到以当前文件名称命名的文件中,执行步骤113。
本步骤可以具体为步骤1122:对设备数据进行摘要计算得到第一摘要值,将第一摘要值和设备数据进行拼接,得到第一拼接数据;加密第一拼接数据得到缓存数据,并将缓存数据写入到以当前文件名称命名的文件中,执行步骤113;
本实施例中,若步骤112具体为步骤1121,则步骤108可以具体为步骤1081:从与当前文件名称对应的文件中读取缓存数据,并将缓存数据作为设备数据,执行步骤109。
若步骤112具体为步骤1122:则步骤108还可以具体包括:
步骤a1:从与当前文件名称对应的文件中读取缓存数据,根据第一预设算法对缓存数据解密,得到第一解密数据;从第一解密数据中获取摘要对比数据和待验数据;
步骤a2:根据摘要算法对待验数据进行摘要计算得到第二摘要值,判断第二摘要指和摘要对比数据是否匹配,如果是,则将待验数据作为设备数据,执行步骤109;否则,清空与智能密钥设备的序列号对应的文件缓存目录下的文件,返回步骤111;
步骤113:将智能密钥设备中的文件写入次数标识写入到与智能密钥设备的序列号对应的文件缓存目录下;
本步骤之前,从智能密钥设备中获取文件写入次数标识。
步骤114:判断设备数据是否为第一指令所需的目标设备数据,如果是,则根据第一指令所需的目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序,返回步骤101;否则,将当前偏移数据的下一个偏移数据作为当前偏移数据,返回步骤111;
步骤115:检测自身的缓存区中是否存在与智能密钥设备的序列号对应的文件缓存目录,如果是,则执行步骤116;否则,创建与智能密钥设备的序列号对应的文件缓存目录,执行步骤125;
步骤116:从与智能密钥设备的序列号对应的文件缓存目录中获取写入次数标识;
步骤117:判断智能密钥设备中的写入次数标识与从与智能密钥设备对应的文件缓存目录中获取写入次数标识是否匹配,如果是,则执行步骤118;否则,清空与智能密钥设备的序列号对应的文件缓存目录下的文件,执行步骤125;
步骤118:根据第二指令中的当前偏移数据计算得到当前文件名称;
步骤119:判断与智能密钥设备的序列号对应的文件缓存目录下是否存在与当前文件名称对应的文件,如果是,则执行步骤120;否则,执行步骤126;
步骤120:清空以当前文件名称命名的文件中的数据;
步骤121:根据第二指令中的待写入数据得到缓存数据;
步骤122:将缓存数据写入到以当前文件名称命名的文件中;
步骤122可以具体为:将待写入数据作为缓存数据,将缓存数据写入到以当前文件名称命名的文件中;执行步骤123;
步骤122还可以具体为:对待写入数据进行摘要计算得到第一摘要值,将第一摘要值和待写入数据进行拼接,得到第一拼接数据;加密第一拼接数据得到缓存数据,并将缓存数据写入到以当前文件名称命名的文件中,执行步骤123;
步骤123:从智能密钥设备中读取写入次数标识;将写入次数标识写入到与智能密钥设备的序列号对应的文件缓存目录下;
步骤124:根据当前偏移数据将待写入数据写入到智能密钥设备中,向应用程序返回第二应答,返回步骤101;
步骤125:根据第二指令中的当前偏移数据计算得到当前文件名称;
步骤126:在与智能密钥设备的序列号对应的文件缓存目录下创建文件,并以当前文件名称命名;返回步骤121;
本实施例中,偏移数据中还可以包括偏移数据类型,相应地,将当前偏移数据的下一个偏移数据作为当前偏移数据,具体为:将当前偏移数据的下一个类型相同的偏移数据作为当前偏移数据;对应地,判断当前偏移数据是否为最后一组偏移数据具体为:判断当前偏移数据是否为最后一组与当前偏移数据类型相同的偏移数据。
实施例3
本实施例提供了一种设备数据的缓存方法,适用于包括读写模块和功能模块的移动终端上;
本实施例中,功能模块执行如图3所示的操作;
步骤201:功能模块等待接收数据,当接收到来自应用程序的第一指令时,执行步骤202;当接收到来自应用程序的第二指令时,执行步骤207;当接收到来自读写模块的读数据应答时,执行步骤205;当接收到来自读写模块的写数据应答时,执行步骤208;
本实施例中,功能模块和功能模块均安装在移动终端上。应用程序位于移动终端上。
具体地,功能模块等待接收数据,当接收到来自应用程序的指令时,解析指令,获取指令中的指令头,根据指令头判断指令的类型,若接收到第一指令时,执行步骤202;若接收到第二指令时,执行步骤206;当接收到来自读写模块的读数据应答时,执行步骤205;当接收到来自读写模块的写数据应答时,执行步骤208;
或者具体地,功能模块等待接收数据,当通过第一接收接口接收到来自应用程序的第一指令时,则执行步骤202;当通过第二接收接口接收到第二指令头时,执行步骤206;当通过第三接收接口接收到来自读写模块的读数据应答时,执行步骤205;当通过第四接收接口接收到来自读写模块的写数据应答时,执行步骤208;
步骤202:功能模块从与连接的智能密钥设备中读取偏移表;
步骤203:功能模块从偏移表中读取第一偏移数据;并将其作为当前偏移数据;
步骤204:功能模块组织包括当前偏移数据的读数据指令,将读数据指令发送读写模块,返回步骤201;
步骤205:功能模块获取并保存读数据应答中的设备数据,判断当前偏移数据是否为偏移表中的最后一组数据,如果是,则执行步骤206;否则,将偏移表中的当前偏移数据的下一组偏移数据作为当前偏移数据,返回步骤204;
步骤206:功能模块判断所有的设备数据中是否存在第一指令所需的目标设备数据,如果是,根据第一指令所需的目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;返回步骤201;否则,向应用程序报错,返回步骤201;
具体地,功能模块解析设备数据,获取设备数据中的数据类型标识,根据数据类型标识判断出设备数据的数据类型是否为第一指令所需的数据类型,如果是,则获取设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果,判断有效数据的解析结果中是否存在和获取到的比对标识相匹配的数据,如果是,将与对比标识相匹配的有效数据对应的设备数据作为第一指令所需的目标设备数据,根据第一指令所需的目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;返回步骤201;否则,向应用程序报错,返回步骤201;
本实施例中,对比标识可以根据第一指令中获取到,例如,第一指令为签名指令时,对比标识可以为从第一指令中获取到的证书的DN;对比标识还可以为功能模块已存储的数据,例如,对比标识为功能模块从智能密钥设备中读取并保存的证书公钥。
本实施例中,功能模块解析设备数据,具体根据TLV格式解析设备数据。
本实施例中设备数据包括:标识、数据总长度和数据;其中,标识占两个字节长度、数据总长度占四个字节长度,设备数据中的数据中包括多组由TLV格式组成的子数据;每组子数据中,T值和L值占四个字节,L值为V值的总长度。其中,T值为第三预设值的数据所对应的V值为检测数据的数据类型,T值为第四预设值的数据所对应的V值为检测数据的有效数据。
例如:当第一指令为签名指令时,功能模块按照TLV格式解析设备数据“00 01 0000 0A 3F 00 00 00 01 00 00 00 01 01 00 00 00 02 00 00 73 24MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud”,将第一和第二字节上的数据“00 01”作为设备数据的标识,将第三和第六字节上的数据“00 00 0A 3F”作为设备数据的数据总长度,将之后的字节上的数据作为设备数据中的数据,获取设备数据中的的数据中的T值为第三预设值00 00 00 01(第七到第十字节上的数据)所对应的V值01将其作为数据类型标识,根据数据类型标识判断出设备数据的数据类型为第一指令所需的证书数据类型,则获取T值为第四预设值00 00 00 02(第十六到第十九字节上的数据)所对应的V值MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud,将其作为设备数据中的有效数据,即证书数据,将证书数据作为参数调用解析函数得到证书数据的解析结果,判断证书数据的解析结果中是否存在和第一指令中的比对标识(例如证书DN)相匹配的数据,如果是,将与第一指令中的对比标识(例如证书DN)相匹配的证书数据对应的设备数据作为第一指令所需的目标设备数据,根据第一指令所需的目标设备数据得到签名密钥标识,向智能密钥设备发送包括签名密钥标识、第一指令中的待签数据和签名算法的指令,得到智能密钥设备返回的签名结果,并将包括签名结果的签名应答作为第一应答返回给应用程序;返回步骤201;否则,向应用程序报错,返回步骤201;
本实施例中,步骤205还可以替换为:功能模块获取读数据应答中的设备数据,判断设备数据是否为第一指令所需的目标设备数据,如果是,根据第一指令所需的目标设备数据执行相应操作,得到第一应答,将第一应答返回给应用程序;返回步骤201;否则,执行步骤b1;
步骤b1:功能模块判断当前偏移数据是否为偏移表中的最后一组数据,如果是,则向应用程序报错,返回步骤201;否则,将偏移表中的当前偏移数据的下一组偏移数据作为当前偏移数据,返回步骤204。
步骤207:功能模块组织包括第二指令中的当前偏移数据和待写入数据的写数据指令,将写数据指令发送读写模块,返回步骤201;
步骤208:功能模块根据写数据应答得到第二应答,向应用程序返回第二应答,返回步骤201;
本实施例中,读写模块执行如图4所示的操作;
步骤301:读写模块等待接收来自功能模块的指令,判断指令类型,若接到读数据指令,则执行步骤302;若接收到写数据指令,则执行步骤319;
具体地,读写模块等待接收来自功能模块的指令,解析指令获取指令的前两个字节上的数据,若获取到的数据为第一预设值,则判断接收到的指令为读数据指令,则执行步骤302;若获取到的数据为第二预设值,则判断接收到的指令为写数据指令,则执行步骤319。
本实施例中,第一预设值可以为80B0;第二预设值为80B1。
例如:读写模块等待接收来自功能模块的指令“80B0007200016b”,解析指令获取指令的前两个字节上的数据“80B0”,若获取到的数据为第一预设值,则判断接收到的指令为读数据指令,则执行步骤302。
步骤302:读写模块检测自身的文件缓冲区中是否存在与智能密钥设备序列号对应的文件缓存目录,如果是,则执行步骤311;否则,执行步骤303;
步骤303:读写模块创建与智能密钥设备的序列号对应的文件缓存目录;
步骤304:读写模块根据读数据指令中的当前偏移数据,从智能密钥设备中读取设备数据;
具体地,读写模块获取读数据指令中的第三和第四字节上的数据,将其作为当前偏移数据中的当前偏移地址;获取第五到第七字节上的数据,将其作为前偏移数据中的当前偏移长度。
例如,读写模块获取读指令“80 B0 00 72 00 01 6b”中的第三和第四字节上的数据“00 72”,将其作为当前偏移数据中的当前偏移地址置;获取第五到第七字节上的数据“00 01 6b”,将其作为前偏移数据中的当前偏移长度。
步骤305:读写模块根据读数据指令中的当前偏移数据得到当前文件名称;
具体地,读写模块根据读数据指令中的当前偏移地址和当前偏移长度计算得到当前文件名称;
例如:读写模块根据读数据指令中的当前偏移地址“00 72”和当前偏移长度“0001 6b”计算得到当前文件名称为.0072_016b.txt
步骤306:读写模块在与智能密钥设备序列号对应的文件缓存目录下创建文件,根据当前文件名称命名文件;
步骤307:读写模块对读取到的设备数据进行摘要计算得到第一摘要值,将第一摘要值和设备数据进行拼接,得到第一拼接数据;
例如:读写模块对读取到的设备数据“00 01 00 00 0A 3F 00 00 00 01 00 0000 01 01 00 00 00 02 00 00 73 24MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud”进行摘要计算得到第一摘要值“f9300b2a32d1c9757595c85b8ee2f662”,将第一摘要值和设备数据进行拼接,得到第一拼接数据“f9300b2a32d1c9757595c85b8ee2f662 00 01 00 00 0A 3F 00 00 00 01 00 0000 01 01 00 00 00 02 00 00 73 24MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud”;
步骤308:读写模块加密第一拼接数据得到缓存数据,并将文件写入到以当前文件名称命名的文件中;
例如:读写模块使用第一加密算法DES算法加密第一拼接数据得到第一加密数据U2FsdGVkX1/cRzr1m5g8qIyjyh3eIIu1mSMmRmGnGwSDUjoP64X8AU6VQjTPGxLh4/5bAEy7tjE3V1vmVZ6LElMewOzce1RUPKohU9U3LebOGBtvGefY2RFDHllVkY44pr345XCXqryTTOc0nnnwxZ3y97dfrQMXhXLd+YfUEQ0JxuNCGdOLRwXfMAovtGjFmv7FvsHsnkPuIt98YLOvgI4OE8a+ukS73N8MAiIuGqKT5nryY8eb/SMAH1D27rNpiEydbim6+E3YhRZqPuQ+t/pa1T+k18CyAfNYQKYVFQ3Nn3lBEhoYK6c4/ALBzSpsYE4ReeXncSoAmDX1f8QPk7K2fEAfGEtpfnIwDyQm4XANUJsWtjWUyFFPPuhGMGK3mj6q8vjhWQBrnzEfqxLDncm25H2JgTJNwXPUinzxxEm0q9iPryDEhr/eUoAW+SYgf+gl+SRx12s/xHm19KpHubvCGJan7qpz+QotknrWPjTvZSplmBLVblN67Jjb6Rjrc0dBOM03oelQ6Wc2aNpfMpZK6zjTfBS46mKPVYQB6em5sMxk8Vi6kh+IiyH1rgtcdmfs7dK2pDrcKu9ql62WPnWymkiTihJSx3sIYoEboWI+p+HOk7UWlFR6uauTekGs5Xa03jUD5yZwjN05GD7pCX7G/Af8zRoF3NaaCnqeco/aD7nquOgeNYnDt5RXyjZsMjNX0Zsl8kECBUYpTa4DhA2ctyx+Gh9Q3NfxxzCdxDE8YC8zT5SV4fVzzLU1BvoQiiiCDYHxMZaxhBRi9HZ2cKPBcsGip5njQ355rAHZI7rjLO3X7Minjom/avtu6jYE4AqPS9lO++hz1Gmn3AIyDXnpOFXFxGNXwUisl/6M38EIqWuTuOf9nSS5bDGCtqw3UnwVViSI4pzrBjSIDZOKjQBum7vPVGnL4LDAJCEyw5JFA16OKhEXe8BmAF12TwKkkA6CWzkf3xwdYbBiq8xFM217m7Y41ifwYE4RCMzNMBBo/n75FvcOhl0j7oTxbSOdqvaCW6GUa+EGtxxwmFhWveoCD2wWwjnnIgCEC6ZIvdLMOu0rjtaEOB7QGMxpZjPikHzx4t+5OYBTAbDVfeOjotLKGJwohrFRdITBGAvaRCbsW5qqF3LfG0lzMEzm0VaHaQzyQTuW9qGm5j8qAbVvew==,并将第一加密数据作为缓存数据写入到当前文件名称为.0072_016b.txt的文件中;
步骤309:读写模块将智能密钥设备中的写入次数标识写入到与智能密钥设备序列号对应的文件缓存目录下;
本步骤之前还包括:读写模块从智能密钥设备中获取写入次数标识。
例如:读写模块将智能密钥设备中的写入次数标识2写入到与智能密钥设备序列号对应的文件缓存目录下。
步骤310:读写模块包括设备数据的读数据应答返回给功能模块,返回步骤301;
例如:读写模块将读取的到设备数据“00 01 00 00 0A 3F 00 00 00 01 00 0000 01 01 00 00 00 02 00 00 73 24MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud”返回给功能模块,返回步骤301;
步骤311:读写模块从与智能密钥设备对应的文件缓存目录中获取写入次数标识;
例如:读写模块从与智能密钥设备对应的文件缓存目录中获取写入次数标识为1;
步骤312:读写模块判断智能密钥设备中的写入次数标识与从与智能密钥设备对应的文件缓存目录中获取到的写入次数标识是否匹配,如果是,则执行步骤313;否则,清空与智能密钥设备序列号对应的文件缓存目录下的文件,返回步骤304;
本步骤之前还包括:读写模块从智能密钥设备中获取写入次数标识。
步骤313:读写模块根据读数据指令中的当前偏移数据得到当前文件名称;
读写模块根据读数据指令中的当前偏移地址和当前偏移长度计算当前文件名称;
例如:读写模块根据读数据指令中的当前偏移地址和当前偏移长度计算当前文件名称.0072_016b.txt
步骤314:读写模块判断与智能密钥设备序列号对应的文件缓存目录下是否存在与当前文件名称对应的文件,如果是,则执行步骤315;否则,执行步骤304;
步骤315:读写模块从与当前文件名称对应的文件中得到缓存数据;
例如:读写模块从与当前文件名称对应的文件中得到缓存数据U2FsdGVkX1/cRzr1m5g8qIyjyh3eIIu1mSMmRmGnGwSDUjoP64X8AU6VQjTPGxLh4/5bAEy7tjE3V1vmVZ6LElMewOzce1RUPKohU9U3LebOGBtvGefY2RFDHllVkY44pr345XCXqryTTOc0nnnwxZ3y97dfrQMXhXLd+YfUEQ0JxuNCGdOLRwXfMAovtGjFmv7FvsHsnkPuIt98YLOvgI4OE8a+ukS73N8MAiIuGqKT5nryY8eb/SMAH1D27rNpiEydbim6+E3YhRZqPuQ+t/pa1T+k18CyAfNYQKYVFQ3Nn3lBEhoYK6c4/ALBzSpsYE4ReeXncSoAmDX1f8QPk7K2fEAfGEtpfnIwDyQm4XANUJsWtjWUyFFPPuhGMGK3mj6q8vjhWQBrnzEfqxLDncm25H2JgTJNwXPUinzxxEm0q9iPryDEhr/eUoAW+SYgf+gl+SRx12s/xHm19KpHubvCGJan7qpz+QotknrWPjTvZSplmBLVblN67Jjb6Rjrc0dBOM03oelQ6Wc2aNpfMpZK6zjTfBS46mKPVYQB6em5sMxk8Vi6kh+IiyH1rgtcdmfs7dK2pDrcKu9ql62WPnWymkiTihJSx3sIYoEboWI+p+HOk7UWlFR6uauTekGs
5Xa03jUD5yZwjN05GD7pCX7G/Af8zRoF3NaaCnqeco/aD7nquOgeNYnDt5RXyjZsMjNX0Zsl8kECBUYpTa4DhA2ctyx+Gh9Q3NfxxzCdxDE8YC8zT5SV4fVzzLU1BvoQiiiCDYHxMZaxhBRi9HZ2cKPBcsGip5njQ355rAHZI7rjLO3X7Minjom/avtu6jYE4AqPS9lO++hz1Gmn3AIyDXnpOFXFxGNXwUisl/6M38EIqWuTuOf9nSS5bDGCtqw3UnwVViSI4pzrBjSIDZOKjQBum7vPVGnL4LDAJCEyw5JFA16OKhEXe8BmAF12TwKkkA6CWzkf3xwdYbBiq8xFM217m7Y41ifwYE4RCMzNMBBo/n75FvcOhl0j7oTxbSOdqvaCW6GUa+EGtxxwmFhWveoCD2wWwjnnIgCEC6ZIvdLMOu0rjtaEOB7QGMxpZjPikHzx4t+5OYBTAbDVfeOjotLKGJwohrFRdITBGAvaRCbsW5qqF3LfG0lzMEzm0VaHaQzyQTuW9qGm5j8qAbVvew==
步骤316:读写模块根据第一预设算法对缓存数据解密,得到第一解密数据;从第一解密数据中获取摘要对比数据和待验数据;
具体地,读写模块根据第一预设算法DES算法对缓存数据解密,得到第一解密数据;根据第一预设位置从第一解密数据中获取前十六字节上(包括第十六字节)的数据将其作为摘要对比数据,将第十六字节之后(不包括第十六字节)的数据作为待验数据。
例如:读写模块根据第一预设算法DES算法对第一读取数据解密,得到第一解密数据“f9300b2a32d1c9757595c85b8ee2f662 00 01 00 00 0A 3F 00 00 00 01 00 00 00 0101 00 00 00 02 00 00 73 24MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud”;根据第一预设位置从第一解密数据中获取前十六字节上(包括第十六字节)的数据“f9300b2a32d1c9757595c85b8ee2f662”将其作为摘要对比数据,将第十六字节之后(不包括第十六字节)的数据00 01 00 00 0A 3F 00 00 0001 00 00 00 01 01 00 00 00 02 00 00 73 24MIICaTCCAdKgAwIBAgIKP5ONzbQidZo4CTANBgkqhkiG9w0BAQUFADAgMRAwDgYDVQQDDAdBQkMyMDQ4MQwwCgYDVQQKDANBQkMwHhcNMTYwNDI2MDIxNzExWhcNMjAwNDI2MDIxNzExWjA6MQ4wDAYDVQQDDAVzb25nMTEZMBcGA1UECwwQUGVyc29uYWxDdXN0b21lcjENMAsGA1UECgwESUNCQzCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYBjtH16BfmGLfkA+r+vxwOe4L9or3TAPA74EU9TGmWwtNcoTNiFusyEVoM0KxDsTFkNuS4KjSNZ+mEqAn7AQOvj2fj++OwBwuq30Blg6BaetqVIQDoJqLuzgxyGyoeTZkAxjaKtBSEBKRA/AzRiYaNQrLHvaAHRNMvoYYeQP6lVrgIDAQABo4GQMIGNMB8GA1UdIwQYMBaAFKZnj0RrXW22Vq+rH/hpP6YEFxSiMAkGA1UdEwQCMAAwQAYDVR0fBDkwNzA1oDOgMaQvMC0xDzANBgNVBAMMBmNybDQ0MTEMMAoGA1UECwwDY3JsMQwwCgYDVQQKDANBQkMwHQYDVR0OBBYEFAGVIcLacrreQUTloyaT+RfgEiupMA0GCSqGSIb3DQEBBQUAA4GBADni3mDCYvLzc/hhghw9J4DCBQ6xELnVLRL4pmJGHiAG8xp31tZHmEcSsgFGNEu+9S/z8ziMbadpaUeBk7F8prG+ujA4+LCp4LbS2PdAjLO4q7/1VVtMBNE7eu/vahgGxbHel6h+h/EyZiElgtyrv6sZK6hgKcJIvIrOiujQ1Cud作为待验数据。
步骤317:读写模块根据摘要算法对待验数据进行摘要计算得到第二摘要值,判断第二摘要指和摘要对比数据是否匹配,如果是,则执行步骤318;否则,清空与智能密钥设备序列号对应的文件缓存目录下的文件,返回步骤304;
例如:读写模块根据摘要算法对待验数据进行摘要计算得到第二摘要值“f9300b2a32d1c9757595c85b8ee2f662”,判断第二摘要指“f9300b2a32d1c9757595c85b8ee2f662”和摘要对比数据“f9300b2a32d1c9757595c85b8ee2f662”匹配,则执行步骤318。
步骤318:读写模块将待验数据作为设备数据,将包括设备数据的读数据应答返回给功能模块,返回步骤301。
步骤319:读写模块检测自身的文件缓冲区中是否存在与智能密钥设备序列号对应的文件缓存目录,如果是,则执行步骤320;否则,创建与智能密钥设备的序列号对应的文件缓存目录,执行步骤331;
步骤320:读写模块从与智能密钥设备对应的文件缓存目录中获取写入次数标识;
例如:读写模块从与智能密钥设备对应的文件缓存目录中获取写入次数标识为1。
步骤321:读写模块判断智能密钥设备中的写入次数标识与从与智能密钥设备对应的文件缓存目录中获取写入次数标识是否匹配,如果是,则执行步骤322;否则,清空与智能密钥设备序列号对应的文件缓存目录下的文件,执行步骤331;
例如:读写模块判断智能密钥设备中的写入次数标识2与从与智能密钥设备对应的文件缓存目录中获取写入次数标识1不匹配,则清空与智能密钥设备序列号对应的文件缓存目录下的文件,执行步骤331;
步骤322:读写模块根据写数据指令中的当前偏移数据得到当前文件名称;
具体地,读写模块根据写数据指令中的当前偏移地址和当前偏移长度计算得到当前文件名称;
步骤323:读写模块判断与智能密钥设备序列号对应的文件缓存目录下是否存在与当前文件名称对应的文件,如果是,则执行步骤324;否则,执行步骤332;
步骤324:读写模块清空与当前文件名称对应的文件中的数据;
步骤325:读写模块根据写数据指令中的待写入数据计算第一摘要值,将第一摘要值和待写入数据进行拼接,得到第一拼接数据;
步骤326:读写模块加密第一拼接数据得到缓存数据,并将缓存数据写入以与当前文件名称命名的文件中;
步骤327:读写模块根据写数据指令中的当前偏移数据,将待写入数据写入到智能密钥设备中;
当读写模块根据写数据指令中的当前偏移数据将待写入数据写入到智能密钥设备中之后,智能密钥设备将自身的写入次数标识加1。
步骤328:读写模块从智能密钥设备中读取写入次数标识;
步骤329:读写模块将写入次数标识写入到与智能密钥设备的序列号对应的文件缓存目录下;
步骤330:读写模块向功能模块返回写数据应答,返回步骤301。
步骤331:写模块根据写数据指令中的当前偏移数据得到当前文件名称;
具体地,读写模块根据写数据指令中的当前偏移地址和当前偏移长度计算得到当前文件名称;
步骤332:读写模块在与智能密钥设备的序列号对应的文件缓存目录下创建文件,并以当前文件名称命名,返回步骤325。
实施例4
本实施例提供了一种设备数据的缓存装置,如图5所示,包括:第一接收模块01、第一获取模块02、第二获取模块03、第一判断模块04、第三获取模块05、第一读取模块06、第四获取模块07、第一写入模块08、第二判断模块09、第一操作模块10、第一返回模块11和第一报错模块12;
第一接收模块01,用于接收来自移动终端上的应用程序发送的第一指令;
第一获取模块02,用于获取已连接到移动终端的智能密钥设备中的偏移数据;
第二获取模块03,用于根据第一获取模块02获取到的偏移数据得到数据索引;
第一判断模块04,用于判断缓存装置中的缓存区中是否存在与第二获取模块03获取到的数据索引对应的缓存数据;
第三获取模块05,用于当第一判断模块04判断为是后,根据缓存区中的与数据索引对应的缓存数据得到设备数据;
第一读取模块06,用于当第一判断模块04判断为否后,根据第一获取模块02获取到的偏移数据从智能密钥设备中读取设备数据;
第四获取模块07,用于根据第一读取模块06读取到的设备数据得到缓存数据;
第一写入模块08,用于将第四获取模块07获取到的缓存数据与第二获取模块03得到的数据索引建立对应关系,并将第四获取模块07获取到的缓存数据写入到缓存区中;
第二判断模块09,用于判断第三获取模块05获取到的设备数据或者第一读取模块06读取到的设备数据是否为目标设备数据;
第一操作模块10,用于当第二判断模块09判断为是后,根据目标设备数据执行相应操作,得到第一应答;
第一返回模块11,用于将第一操作模块10得到的第一应答返回给应用程序;
第一报错模块12,用于当第二判断模块09判断为否后,报错。
本实施例中,缓存装置中还可以包括:第三判断模块;
第一获取模块02,具体用于获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;当第三判断模块判断为否后,将当前偏移数据的下一组偏移数据作为当前偏移数据;
第二获取模块03,具体用于根据当前偏移数据得到数据索引;
第三判断模块,用于当第二判断模块09判断为否后,判断当前偏移数据是否为最后一组偏移数据;
第一报错模块12,具体用于第三判断模块判断为是后,报错并清空缓存区。
对应地,第二判断模块09,具体用于获取设备数据中的数据类型标识:
当数据类型标识为第二标识时,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据;当数据类型标识为第一标识时,获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据和对比数据是否匹配,如果是,则将数据类型标识为第一标识的设备数据作为目标设备数据;
第三判断模块,还用于当第二判断模块09将获取到的有效数据作为对比数据后,判断当前偏移数据是否为最后一组偏移数据。
本实施例中,缓存装置还可以包括:第四判断模块;
第一获取模块02,具体用于获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;当第四判断模块判断为否后,将当前偏移数据的下一组偏移数据作为当前偏移数据;
第四判断模块,用于判断当前偏移数据是否为最后一组偏移数据;
第二判断模块09,具体用于当第四判断模块判断为是后,判断获取到的所有设备数据中是否存在目标设备数据;
第一报错模块12,还用于当第二判断模块09判断为否后,清空缓存区。
对应地,第二判断模块09,具体用于获取设备数据中的数据类型标识,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据;获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据与对比数据是否匹配,如果是,则将数据类型标识为第一标识的设备数据作为目标设备数据;否则,判断设备数据不是目标设备数据。
本实施例中,缓存装置还可以包括:第一存储模块、第五获取模块、第二读取模块、第五判断模块和第一清空模块;
第一存储模块,用于当第一写入模块08将第四获取模块07获取到的缓存数据写入到缓存区中后,将从智能密钥设备中读取到的写入次数标识与缓存区对应保存;
第五获取模块,用于从缓存装置中获取与缓存区对应的写入次数标识;
第二读取模块,用于从智能密钥设备中读取写入次数标识;
第五判断模块,用于判断第二读取模块读取到的写入次数标识与第五获取模块获取到的写入次数标识是否匹配;
第一清空模块,用于当第五判断模块判断为否后,清空缓存区;
第一获取模块02,具体用于当第五判断模块判断为是后,获取已连接到移动终端的智能密钥设备中的偏移数据;当第一清空模块清空缓存区后,获取已连接到移动终端的智能密钥设备中的偏移数据。
本实施例中,第三获取模块05,具体用于当第一判断模块04判断为是后,将缓存区中的与数据索引对应的缓存数据作为设备数据;第四获取模块07,具体用于将第一读取模块06读取到的设备数据作为缓存数据。
本实施例中,第三获取模块05具体包括:第一解密单元、第一摘要单元、第一判断单元和第一清空单元;第四获取模块07具体包括:第二摘要单元、第一拼接单元和第一加密单元;
第一解密单元,用于当第一判断模块04判断为是后,根据第一预设算法对缓存数据解密得到第一解密数据,从第一解密数据中获取摘要比对数据和待验数据;
第一摘要单元,用于根据摘要算法对待验数据进行摘要计算得到第二摘要值;
第一判断单元,用于判断第二摘要值和摘要比对数据是否匹配,如果是,则将待验数据作为设备数据;
第一清空单元,用于清空缓存区;
第一读取模块06,还用于当第一清空单元清空缓存区后,根据第一获取模块02获取到的偏移数据从智能密钥设备中读取设备数据;
第二摘要单元,用于对设备数据进行摘要计算得到第一摘要值;
第一拼接单元,用于将第一摘要值和设备数据进行拼接,得到第一拼接数据;
第一加密单元,用于加密第一拼接数据得到缓存数据。
本实施例中,第二判断模块09可以具体包括:第一获取单元和第二判断单元;
第一获取单元用于获取第三获取模块05或者第四获取模块07获取到的设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果;
第二判断单元用于判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据,如果是,则判断出设备数据为目标设备数据;否则,判断出设备数据不是目标设备数据。
相应地,缓存装置还可以包括:第六判断模块;
第六判断模块,用于根据第一获取单元得到的解析结果判断有效数据是否合法;
第二判断单元,具体用于当第六判断模块判断为是后,判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据;如果是,则判断出设备数据为目标设备数据;当第六判断模块或自身判断为否后,判断出设备数据不是目标设备数据。
相应地,缓存装置还可以:第六获取模块;
第六获取模块,用于获取设备数据中的数据类型标识,判断设备数据的数据类型是否为设备数据类型;
第一获取单元,具体用于当第六获取模块判断为是后,获取第三获取模块05或者第四获取模块07获取到的设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果;
第二判断单元,还用于当第六获取模块判断为否后,判断出设备数据不是目标设备数据。
本实施例中,第一操作模块10,具体包括:签名单元和验签单元;
签名单元,用于根据目标设备数据得到签名密钥标识、待签数据和签名算法,向智能密钥设备发送包括签名密钥标识、待签数据和签名算法的指令,得到智能密钥设备返回的签名结果;
验签单元,用于对签名结果验签,如果验证通过,则将包括签名结果的签名应答作为第一应答返回给应用程序;
第一报错模块12,还用于当验签单元验证失败后,报错。
本实施例中,第二判断模块09,还可以具体用于获取设备数据中的比对标识,判断设备数据中的比对标识是否与第一指令中的比对标识相匹配,如果是,则判断出设备数据为目标设备数据;否则,判断出设备数据不是目标设备数据。
本实施例中,缓存装置还可以包括:第二接收模块、第七获取模块、第二写入模块、第三写入模块和第二返回模块;
第二接收模块,用于接收到来自应用程序的第二指令;
第七获取模块,用于根据第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据;
第二写入模块,用于将第七获取模块获取到的缓存数据写入到缓存装置的缓存区中,并将缓存数据和数据索引建立对应关系;
第三写入模块,用于根据第二指令中的偏移数据,将第二指令中的待写入数据写入到智能密钥设备中;
第二返回模块,用于向应用程序返回第二应答。
进一步地,缓存装置还包括:第八获取模块、第三读取模块、第七判断模块和第二清空模块;
第八获取模块,用于获取自身保存的与缓存区对应的写入次数标识;
第三读取模块,用于从智能密钥设备中读取写入次数标识;
第七判断模块,用于判断第三读取模块读取到的写入次数标识和第八获取模块获取到的写入次数标识是否匹配;
第二清空模块,用于当第七判断模块判断为否后,清空缓存区;
第七获取模块,具体用于当第七判断模块判断为是后,根据第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据;当第二清空模块清空缓存区后,根据第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据。
本实施例中,缓存装置还可以包括:第九获取模块;
第九获取模块,用于根据第一指令获取设备数据类型;
第一获取模块02,具体用于获取已连接到移动终端的智能密钥设备中的偏移数据类型为设备数据类型的偏移数据。
本实施例中,第一报错模块12,还可以用于当第二判断模块09判断为否后,清空缓存区。
本实施例提供了一种设备数据的缓存装置,本装置使用根据智能密钥设备中的偏移数据分段的读取智能密钥设备中的设备数据并分段的写入缓存区的技术方案,若在读取或写入过程中被打断,可以根据智能密钥设备中的偏移数据判断出智能密钥设备中的哪些数据已写入缓存区,哪些未写入缓存区,若缓存区中已有与偏移数据对应的缓存数据,则根据缓存区中的缓存数据得到设备数据,;若缓存区中无与偏移数据对应的缓存数据,则根据智能密钥设备中的偏移数据读取智能密钥设备中的设备数据;和现有技术相比缩短了读取智能密钥设备中的设备数据的时间,用户体验好。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (34)
1.一种设备数据的缓存方法,其特征在于,包括:
步骤s0:等待接收来自移动终端上的应用程序发送的指令,若指令为第一指令,则执行步骤s1;
步骤s1:获取已连接到移动终端的智能密钥设备中的偏移数据;
步骤s2:根据所述偏移数据得到数据索引;判断缓存区中是否存在与所述数据索引对应的缓存数据,如果是,则执行步骤s3;否则,执行步骤s4;
步骤s3:根据所述缓存区中的与所述数据索引对应的缓存数据得到设备数据,执行步骤s5;
步骤s4:根据所述偏移数据从智能密钥设备中读取设备数据;根据所述设备数据得到缓存数据,将所述缓存数据与所述数据索引建立对应关系,并将所述缓存数据写入到缓存区中,执行步骤s5;
步骤s5:判断所述设备数据是否为目标设备数据,如果是,则根据所述目标设备数据执行相应操作,得到第一应答;将第一应答返回给所述应用程序;否则,报错。
2.根据权利要求1所述的方法,其特征在于:所述步骤s1具体为:获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;
所述根据所述偏移数据得到数据索引,具体为:根据所述当前偏移数据得到数据索引;
所述步骤s5具体包括:
步骤a1:判断所述设备数据是否为目标设备数据,如果是,则根据所述目标设备数据执行相应操作,得到第一应答,将第一应答返回给所述应用程序;否则,执行步骤a2;
步骤a2:判断当前偏移数据是否为最后一组偏移数据,如果是,则报错并清空所述缓存区;否则,将当前偏移数据的下一组偏移数据作为当前偏移数据;返回步骤s2。
3.根据权利要求1所述的方法,其特征在于,所述步骤s1具体为:获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;
所述根据所述偏移数据得到数据索引,具体为:根据所述当前偏移数据得到数据索引;
所述步骤s5具体包括:
步骤b1:判断当前偏移数据是否为最后一组偏移数据,如果是,则执行步骤b2;否则,将当前偏移数据的下一组偏移数据作为当前偏移数据;返回步骤s2;
步骤b2:判断获取到的所有设备数据中是否存在目标设备数据,如果是,则根据所述目标设备数据执行相应操作,得到第一应答,将第一应答返回给所述应用程序;否则报错并清空所述缓存区。
4.根据权利要求1所述的方法,其特征在于,所述将所述缓存数据写入到缓存区中之后,还包括:将从智能密钥设备中读取到的写入次数标识与所述缓存区对应保存;
所述步骤s1之前还包括:
步骤c1:获取自身保存的与所述缓存区对应的写入次数标识;
步骤c2:从智能密钥设备中读取写入次数标识,判断从智能密钥设备中读取到的写入次数标识与自身保存的与所述缓存区对应的写入次数标识是否匹配,如果是,则执行步骤s1;否则清空所述缓存区,返回步骤s1。
5.根据权利要求1所述的方法,其特征在于,所述根据所述缓存区中的与所述数据索引对应的缓存数据得到设备数据,具体为:将所述缓存区中的与所述数据索引对应的缓存数据作为设备数据;
所述根据所述设备数据得到缓存数据,具体为:将所述设备数据作为缓存数据。
6.根据权利要求1所述的方法,其特征在于,所述根据所述缓存区中的与所述数据索引对应的缓存数据得到设备数据,具体包括:
步骤g1:根据第一预设算法对所述缓存数据解密得到第一解密数据,从所述第一解密数据中获取摘要比对数据和待验数据;
步骤g2:根据摘要算法对所述待验数据进行摘要计算得到第二摘要值,判断所述第二摘要值和所述摘要比对数据是否匹配,如果是,则将所述待验数据作为设备数据,执行步骤s5;否则,清空所述缓存区,执行步骤s4;
所述根据所述设备数据得到缓存数据,具体包括:
步骤h1:对所述设备数据进行摘要计算得到第一摘要值,将第一摘要值和设备数据进行拼接,得到第一拼接数据;
步骤h2:加密所述第一拼接数据得到缓存数据。
7.根据权利要求1所述的方法,其特征在于,判断所述设备数据是否为目标设备数据,具体为:
获取设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果,判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据,如果是,则判断出所述设备数据为目标设备数据;否则,判断出所述设备数据不是目标设备数据。
8.根据权利要求7所述的方法,其特征在于,所述判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据之前,还包括:根据所述解析结果,判断有效数据是否合法,如果是,则继续;否则,判断出所述设备数据不是目标设备数据。
9.根据权利要求7所述的方法,其特征在于,所述获取设备数据中的有效数据之前还包括:获取设备数据中的数据类型标识,判断设备数据的数据类型是否为设备数据类型,如果是,则获取设备数据中的有效数据;否则,判断出所述设备数据不是目标设备数据。
10.根据权利要求1所述的方法,其特征在于,所述根据所述目标设备数据执行相应操作,得到第一应答,将第一应答返回给所述应用程序,具体包括:
步骤d1:根据所述目标设备数据得到签名密钥标识、待签数据和签名算法,向所述智能密钥设备发送包括所述签名密钥标识、所述待签数据和所述签名算法的指令,得到所述智能密钥设备返回的签名结果;
步骤d2:对所述签名结果验签,如果验证通过,则将包括所述签名结果的签名应答作为第一应答返回给应用程序;否则,报错,返回步骤s0。
11.根据权利要求1所述的方法,其特征在于,判断所述设备数据是否为目标设备数据,具体为:获取设备数据中的比对标识,判断设备数据中的比对标识是否与第一指令中的比对标识相匹配,如果是,则判断出所述设备数据为目标设备数据;否则,判断出所述设备数据不是目标设备数据。
12.根据权利要求1所述的方法,其特征在于,所述步骤s0中还包括:当接收到来自应用程序的第二指令时,执行步骤k3;
步骤k3:根据所述第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据,将所述缓存数据写入到所述缓存区中,并将所述缓存数据和所述数据索引建立对应关系;根据第二指令中的偏移数据,将所述第二指令中的待写入数据写入到所述智能密钥设备中;向所述应用程序返回第二应答。
13.根据权利要求12所述的方法,其特征在于,当接收到来自应用程序的第二指令时,执行步骤k3之前,还包括;
步骤k1:获取自身保存的与所述缓存区对应的写入次数标识;
步骤k2:从智能密钥设备中读取写入次数标识,判断从智能密钥设备中读取到的写入次数标识与自身保存的与所述缓存区对应的写入次数标识是否匹配,如果是,执行步骤k3;否则,清空所述缓存区,执行步骤k3;
所述第二指令中的待写入数据写入到所述智能密钥设备中之后,还包括:从所述智能密钥设备中读取写入次数标识;将写入次数标识与所述缓存区对应保存。
14.根据权利要求2所述的方法,其特征在于,判断所述设备数据是否为目标设备数据,具体为:获取设备数据中的数据类型标识:
当数据类型标识为第二标识时,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据,执行步骤a2;当数据类型标识为第一标识时,获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据和所述对比数据是否匹配,如果是,则将所述数据类型标识为第一标识的设备数据作为目标设备数据,继续;否则,执行步骤a2。
15.根据权利要求3所述的方法,其特征在于,判断所述设备数据是否为目标设备数据,具体为:获取设备数据中的数据类型标识,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据;获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据与所述对比数据是否匹配,如果是,则将所述数据类型标识为第一标识的设备数据作为目标设备数据;否则,判断所述设备数据不是目标设备数据。
16.根据权利要求1所述的方法,其特征在于,所述偏移数据中包括:偏移数据类型;
所述步骤s1之前还包括:根据所述第一指令获取目标数据类型;
所述步骤s1具体为:获取已连接到移动终端的智能密钥设备中的偏移数据类型为目标数据类型的偏移数据。
17.根据权利要求1所述的方法,其特征在于,所述步骤s5中判断为否后,还包括:清空所述缓存区。
18.一种设备数据的缓存装置,其特征在于,包括:第一接收模块、第一获取模块、第二获取模块、第一判断模块、第三获取模块、第一读取模块、第四获取模块、第一写入模块、第二判断模块、第一操作模块、第一返回模块和第一报错模块;
所述第一接收模块,用于接收来自移动终端上的应用程序发送的第一指令;
所述第一获取模块,用于获取已连接到移动终端的智能密钥设备中的偏移数据;
所述第二获取模块,用于根据所述第一获取模块获取到的所述偏移数据得到数据索引;
所述第一判断模块,用于判断所述缓存装置中的缓存区中是否存在与所述第二获取模块获取到的所述数据索引对应的缓存数据;
所述第三获取模块,用于当所述第一判断模块判断为是后,根据所述缓存区中的与所述数据索引对应的缓存数据得到设备数据;
所述第一读取模块,用于当所述第一判断模块判断为否后,根据所述第一获取模块获取到的偏移数据从智能密钥设备中读取设备数据;
所述第四获取模块,用于根据所述第一读取模块读取到的设备数据得到缓存数据;
所述第一写入模块,用于将所述第四获取模块获取到的所述缓存数据与所述第二获取模块得到的数据索引建立对应关系,并将所述第四获取模块获取到的所述缓存数据写入到缓存区中;
所述第二判断模块,用于判断所述第三获取模块获取到的所述设备数据或者所述第一读取模块读取到的设备数据是否为目标设备数据;
所述第一操作模块,用于当所述第二判断模块判断为是后,根据所述目标设备数据执行相应操作,得到第一应答;
所述第一返回模块,用于将所述第一操作模块得到的第一应答返回给所述应用程序;
所述第一报错模块,用于当所述第二判断模块判断为否后,报错。
19.根据权利要求18所述的装置,其特征在于,还包括:第三判断模块;
所述第一获取模块,具体用于获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;当所述第三判断模块判断为否后,将当前偏移数据的下一组偏移数据作为当前偏移数据;
所述第二获取模块,具体用于根据所述当前偏移数据得到数据索引;
所述第三判断模块,用于当所述第二判断模块判断为否后,判断当前偏移数据是否为最后一组偏移数据;
所述第一报错模块,具体用于所述第三判断模块判断为是后,报错并清空所述缓存区。
20.根据权利要求18所述的装置,其特征在于,还包括:第四判断模块;
所述第一获取模块,具体用于获取已连接到移动终端的智能密钥设备中的偏移数据;将获取到的已连接到移动终端的智能密钥设备中的偏移数据中的第一偏移数据作为当前偏移数据;当所述第四判断模块判断为否后,将当前偏移数据的下一组偏移数据作为当前偏移数据;
所述第四判断模块,用于判断当前偏移数据是否为最后一组偏移数据;
所述第二判断模块,具体用于当所述第四判断模块判断为是后,判断获取到的所有设备数据中是否存在目标设备数据;
所述第一报错模块,还用于当所述第二判断模块判断为否后,清空所述缓存区。
21.根据权利要求18所述的装置,其特征在于,还包括:第一存储模块、第五获取模块、第二读取模块、第五判断模块和第一清空模块;
所述第一存储模块,用于当所述第一写入模块将所述第四获取模块获取到的所述缓存数据写入到缓存区中后,将从智能密钥设备中读取到的写入次数标识与所述缓存区对应保存;
所述第五获取模块,用于从所述缓存装置中获取与所述缓存区对应的写入次数标识;
所述第二读取模块,用于从智能密钥设备中读取写入次数标识;
所述第五判断模块,用于判断所述第二读取模块读取到的写入次数标识与所述第五获取模块获取到的写入次数标识是否匹配;
所述第一清空模块,用于当所述第五判断模块判断为否后,清空所述缓存区;
所述第一获取模块,具体用于当所述第五判断模块判断为是后,获取已连接到移动终端的智能密钥设备中的偏移数据;当所述第一清空模块清空所述缓存区后,获取已连接到移动终端的智能密钥设备中的偏移数据。
22.根据权利要求18所述的装置,其特征在于,所述第三获取模块,具体用于当所述第一判断模块判断为是后,将所述缓存区中的与所述数据索引对应的缓存数据作为设备数据;
所述第四获取模块,具体用于将所述第一读取模块读取到的设备数据作为缓存数据。
23.根据权利要求18所述的装置,其特征在于,所述第三获取模块具体包括:第一解密单元、第一摘要单元、第一判断单元和第一清空单元;所述第四获取模块具体包括:第二摘要单元、第一拼接单元和第一加密单元;
所述第一解密单元,用于当所述第一判断模块判断为是后,根据第一预设算法对所述缓存数据解密得到第一解密数据,从所述第一解密数据中获取摘要比对数据和待验数据;
所述第一摘要单元,用于根据摘要算法对所述待验数据进行摘要计算得到第二摘要值;
所述第一判断单元,用于判断所述第二摘要值和所述摘要比对数据是否匹配,如果是,则将所述待验数据作为设备数据;
所述第一清空单元,用于清空所述缓存区;
所述第一读取模块,还用于当所述第一清空单元清空所述缓存区后,根据所述第一获取模块获取到的偏移数据从智能密钥设备中读取设备数据;
所述第二摘要单元,用于对所述设备数据进行摘要计算得到第一摘要值;
所述第一拼接单元,用于将第一摘要值和设备数据进行拼接,得到第一拼接数据;
所述第一加密单元,用于加密所述第一拼接数据得到缓存数据。
24.根据权利要求18所述的装置,其特征在于,所述第二判断模块具体包括:第一获取单元和第二判断单元;
所述第一获取单元用于获取所述第三获取模块或者所述第四获取模块获取到的设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果;
所述第二判断单元用于判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据,如果是,则判断出所述设备数据为目标设备数据;否则,判断出所述设备数据不是目标设备数据。
25.根据权利要求24所述的装置,其特征在于,还包括:第六判断模块;
所述第六判断模块,用于根据所述第一获取单元得到的所述解析结果判断有效数据是否合法;
所述第二判断单元,具体用于当所述第六判断模块判断为是后,判断有效数据的解析结果中是否存在与第一指令中的比对标识相匹配的数据;如果是,则判断出所述设备数据为目标设备数据;当所述第六判断模块或自身判断为否后,判断出所述设备数据不是目标设备数据。
26.根据权利要求24所述的装置,其特征在于,还包括:第六获取模块;
所述第六获取模块,用于获取设备数据中的数据类型标识,判断设备数据的数据类型是否为设备数据类型;
所述第一获取单元,具体用于当所述第六获取模块判断为是后,获取所述第三获取模块或者所述第四获取模块获取到的设备数据中的有效数据,将有效数据作为参数调用解析函数得到有效数据的解析结果;
所述第二判断单元,还用于当所述第六获取模块判断为否后,判断出所述设备数据不是目标设备数据。
27.根据权利要求18所述的装置,其特征在于,所述第一操作模块,具体包括:签名单元和验签单元;
所述签名单元,用于根据所述目标设备数据得到签名密钥标识、待签数据和签名算法,向所述智能密钥设备发送包括所述签名密钥标识、所述待签数据和所述签名算法的指令,得到所述智能密钥设备返回的签名结果;
所述验签单元,用于对所述签名结果验签,如果验证通过,则将包括所述签名结果的签名应答作为第一应答返回给应用程序;
所述第一报错模块,还用于当所述验签单元验证失败后,报错。
28.根据权利要求18所述的装置,其特征在于,所述第二判断模块,具体用于获取设备数据中的比对标识,判断设备数据中的比对标识是否与第一指令中的比对标识相匹配,如果是,则判断出所述设备数据为目标设备数据;否则,判断出所述设备数据不是目标设备数据。
29.根据权利要求18所述的装置,其特征在于,还包括:第二接收模块、第七获取模块、第二写入模块、第三写入模块和第二返回模块;
所述第二接收模块,用于接收到来自应用程序的第二指令;
所述第七获取模块,用于根据所述第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据;
所述第二写入模块,用于将所述第七获取模块获取到的缓存数据写入到所述缓存装置的缓存区中,并将所述缓存数据和所述数据索引建立对应关系;
所述第三写入模块,用于根据所述第二指令中的偏移数据,将所述第二指令中的待写入数据写入到所述智能密钥设备中;
所述第二返回模块,用于向所述应用程序返回第二应答。
30.根据权利要求29所述的装置,其特征在于,还包括:第八获取模块、第三读取模块、第七判断模块和第二清空模块;
所述第八获取模块,用于获取自身保存的与所述缓存区对应的写入次数标识;
第三读取模块,用于从智能密钥设备中读取写入次数标识;
所述第七判断模块,用于判断所述第三读取模块读取到的写入次数标识和所述第八获取模块获取到的写入次数标识是否匹配;
所述第二清空模块,用于当所述第七判断模块判断为否后,清空所述缓存区;
所述第七获取模块,具体用于当所述第七判断模块判断为是后,根据所述第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据;当所述第二清空模块清空所述缓存区后,根据所述第二指令中的偏移数据得到数据索引;根据第二指令中的待写入数据得到缓存数据。
31.根据权利要求19所述的装置,其特征在于,所述第二判断模块,具体用于获取设备数据中的数据类型标识:
当数据类型标识为第二标识时,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据;当数据类型标识为第一标识时,获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据和所述对比数据是否匹配,如果是,则将所述数据类型标识为第一标识的设备数据作为目标设备数据;
所述第三判断模块,还用于当所述第二判断模块将获取到的有效数据作为对比数据后,判断当前偏移数据是否为最后一组偏移数据。
32.根据权利要求20所述的装置,其特征在于,所述第二判断模块,具体用于获取设备数据中的数据类型标识,获取数据类型标识为第二标识的设备数据中的有效数据并将获取到的有效数据作为对比数据;获取数据类型标识为第一标识的设备数据中的有效数据,判断获取到的数据类型标识为第一标识的设备数据中的有效数据与所述对比数据是否匹配,如果是,则将所述数据类型标识为第一标识的设备数据作为目标设备数据;否则,判断所述设备数据不是目标设备数据。
33.根据权利要求18所述的装置,其特征在于,还包括:第九获取模块;
所述第九获取模块,用于根据所述第一指令获取目标数据类型;
所述第一获取模块,具体用于获取已连接到移动终端的智能密钥设备中的偏移数据类型为目标数据类型的偏移数据。
34.根据权利要求18所述的装置,其特征在于,所述第一报错模块,还用于当所述第二判断模块判断为否后,清空所述缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810038067.2A CN108197456B (zh) | 2018-01-16 | 2018-01-16 | 一种设备数据的缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810038067.2A CN108197456B (zh) | 2018-01-16 | 2018-01-16 | 一种设备数据的缓存方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108197456A true CN108197456A (zh) | 2018-06-22 |
CN108197456B CN108197456B (zh) | 2020-05-19 |
Family
ID=62589683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810038067.2A Active CN108197456B (zh) | 2018-01-16 | 2018-01-16 | 一种设备数据的缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108197456B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110929291A (zh) * | 2019-12-04 | 2020-03-27 | 楚天龙股份有限公司 | 一种存取文本文件的方法、装置和计算机可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133556A1 (en) * | 2003-01-02 | 2004-07-08 | Wolczko Mario I. | Method and apparatus for skewing a bi-directional object layout to improve cache performance |
CN101650664A (zh) * | 2009-06-30 | 2010-02-17 | 北京飞天诚信科技有限公司 | 链接方法和链接器 |
CN101777979A (zh) * | 2009-12-28 | 2010-07-14 | 北京飞天诚信科技有限公司 | 一种智能密钥设备的工作方法和系统 |
CN102841857A (zh) * | 2012-07-25 | 2012-12-26 | 龙芯中科技术有限公司 | 缓存预测执行的处理器与装置及方法 |
CN102843396A (zh) * | 2011-06-22 | 2012-12-26 | 中兴通讯股份有限公司 | 一种分布式缓存系统中的数据写入及读取方法及装置 |
CN103257934A (zh) * | 2013-04-12 | 2013-08-21 | 广东数字证书认证中心有限公司 | 数字证书的存储、获取方法和装置 |
CN103488581A (zh) * | 2013-09-04 | 2014-01-01 | 用友软件股份有限公司 | 数据缓存系统和数据缓存方法 |
US20140164702A1 (en) * | 2010-03-19 | 2014-06-12 | Kabushiki Kaisha Toshiba | Virtual address cache memory, processor and multiprocessor |
CN103905145A (zh) * | 2012-12-27 | 2014-07-02 | 北京新媒传信科技有限公司 | 基于数据分块的数据传输方法和装置 |
CN105608159A (zh) * | 2015-12-18 | 2016-05-25 | 北京奇虎科技有限公司 | 数据缓存的方法和装置 |
-
2018
- 2018-01-16 CN CN201810038067.2A patent/CN108197456B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133556A1 (en) * | 2003-01-02 | 2004-07-08 | Wolczko Mario I. | Method and apparatus for skewing a bi-directional object layout to improve cache performance |
CN101650664A (zh) * | 2009-06-30 | 2010-02-17 | 北京飞天诚信科技有限公司 | 链接方法和链接器 |
CN101777979A (zh) * | 2009-12-28 | 2010-07-14 | 北京飞天诚信科技有限公司 | 一种智能密钥设备的工作方法和系统 |
US20140164702A1 (en) * | 2010-03-19 | 2014-06-12 | Kabushiki Kaisha Toshiba | Virtual address cache memory, processor and multiprocessor |
CN102843396A (zh) * | 2011-06-22 | 2012-12-26 | 中兴通讯股份有限公司 | 一种分布式缓存系统中的数据写入及读取方法及装置 |
CN102841857A (zh) * | 2012-07-25 | 2012-12-26 | 龙芯中科技术有限公司 | 缓存预测执行的处理器与装置及方法 |
CN103905145A (zh) * | 2012-12-27 | 2014-07-02 | 北京新媒传信科技有限公司 | 基于数据分块的数据传输方法和装置 |
CN103257934A (zh) * | 2013-04-12 | 2013-08-21 | 广东数字证书认证中心有限公司 | 数字证书的存储、获取方法和装置 |
CN103488581A (zh) * | 2013-09-04 | 2014-01-01 | 用友软件股份有限公司 | 数据缓存系统和数据缓存方法 |
CN105608159A (zh) * | 2015-12-18 | 2016-05-25 | 北京奇虎科技有限公司 | 数据缓存的方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110929291A (zh) * | 2019-12-04 | 2020-03-27 | 楚天龙股份有限公司 | 一种存取文本文件的方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108197456B (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273280B (zh) | 一种日志处理方法、装置、电子设备和存储介质 | |
CN103914439B (zh) | 一种文档在线编辑方法、设备以及系统 | |
CN108133008A (zh) | 数据库中业务数据的处理方法、装置、设备和存储介质 | |
CA2553024A1 (en) | System and method for associating message addresses with certificates | |
CN106973384A (zh) | 一种无线保真Wi‑Fi连接方法及移动终端 | |
CN106033393A (zh) | 一种应用程序测试方法及系统以及移动终端 | |
CN104965999B (zh) | 一种中短基因片段测序的分析拼接方法及设备 | |
CN110413595A (zh) | 一种应用于分布式数据库的数据迁移方法和相关装置 | |
CN106792699A (zh) | 一种无线保真Wi‑Fi连接方法及移动终端 | |
CN109982325A (zh) | 一种获取移动终端信息的方法、装置、设备及存储介质 | |
CN107360165A (zh) | 终端设备、云服务器以及管控操作系统的方法及装置 | |
CN108197456A (zh) | 一种设备数据的缓存方法及装置 | |
CN103839547A (zh) | 比对语音操作信号以载入对应指令元素的系统及其方法 | |
CN108595412A (zh) | 纠错处理方法及装置、计算机设备及可读介质 | |
CN100571267C (zh) | 一种通用多协议关联方法 | |
CN106327143A (zh) | 用于流程中的节点的方法和装置 | |
CN106610894A (zh) | 接口的测试方法及装置 | |
CN108810836A (zh) | 一种向用户提供近场通信设备信息的方法及系统 | |
CN106557530B (zh) | 业务系统、数据修复方法及装置 | |
CN117201601A (zh) | 物联网设备接入方法、装置、设备及存储介质 | |
CN106791982A (zh) | 账号管理方法及装置 | |
Wheeler et al. | Protocol analysis using numerical Petri nets | |
CN110943759A (zh) | 一种基于深度优先搜索算法的电力通信链路数据校核方法 | |
CN110110099A (zh) | 一种多媒体文件检索方法及装置 | |
CN108989902A (zh) | 一种弹幕消息的处理方法、装置、终端和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |