一种浏览器访问智能密钥设备的方法及装置的制造方法

文档序号:10691169阅读:465来源:国知局
一种浏览器访问智能密钥设备的方法及装置的制造方法
【专利摘要】本发明提供一种浏览器访问智能密钥设备的方法及装置,该方法包括:模拟服务器接收浏览器发送来的第一数据,当判断出第一数据符合第一WebSocket预设格式时,解析第一数据得到通讯参数,根据得到的通讯参数查找并调用智能密钥设备的驱动接口,驱动接口发送相应指令给智能密钥设备并接收智能密钥设备返回的操作结果,模拟服务器将驱动接口接收到的操作结果组织得到符合第一WebSocket预设格式的第二数据,将第二数据返回给浏览器。本发明的技术方案,摒弃了控件作为媒介访问智能密钥设备的传统方法,能够有效的兼容新型浏览器,进行基于浏览器访问智能密钥设备进行身份认证、修改信息等一系列操作。
【专利说明】
-种浏览器访问智能密钥设备的方法及装置
技术领域
[0001] 本发明设及通信领域,尤其设及一种浏览器访问智能密钥设备的方法及装置。
【背景技术】
[0002] 信息技术高速发展的今天,网络已成为生活中的重要角色,随之而来的,通过智能 密钥设备,例如USB Key,进行基于浏览器的信息识别、身份认证等安全事项也成为了备受 关注的重中之重。伴随着浏览器的推陈出新,IE10、firefoxll、ch;rome41、safa;ri6及其W 上版本等的新型浏览器不断问世,但是却擬弃了原有的NPAPI、AtiveX等控件的使用,因而 基于上述新型浏览器无法使用控件作为媒介来使用智能密钥设备进行身份认证、修改信息 等一系列操作。

【发明内容】

[0003] 本发明的目的是为了克服现有技术的不足,提供一种浏览器访问智能密钥设备的 方法及装置。
[0004] 一方面,本发明提供了一种浏览器访问智能密钥设备的方法,包括:
[0005] 步骤S1:模拟服务器接收浏览器发送来的第一数据,判断所述第一数据是否符合 第一 WebSocket预设格式,是则解析所述第一数据得到通讯参数,执行步骤S2,否则报错,结 束;
[0006] 步骤S2:所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接 口,所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的操作 结果;
[0007] 步骤S3:所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述第 一 WebSocket预设格式的第二数据,将所述第二数据返回给所述浏览器。
[000引可选地,所述步骤S1之前,还包括:
[0009] 步骤a:模拟服务器同浏览器建立WebSocket连接。
[0010] 所述步骤a,具体为:
[0011] 步骤al:所述模拟服务器接收所述浏览器发送来的连接请求,判断所述连接请求 是否符合第二WebSocket预设格式,是则根据所述连接请求中的第一参数生成第二参数,根 据所述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据,否则报错,结 束;
[0012] 步骤a2:所述模拟服务器将所述第二WebSocket预设格式的连接请求应答数据发 送给所述浏览器,所述WebSocket连接建立成功。
[0013] 可选地,所述根据所述连接请求中的第一参数生成第二参数,具体为:将所述第一 参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串 进行哈希运算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。
[0014] 可选地,所述判断所述连接请求是否符合第二WebSocket预设格式,具体为:所述 模拟服务器判断所述连接请求是否为将化化协议头升级为WebSocket协议头形式的连接请 求,是则确认所述连接请求符合第二WebSocket预设格式,否则确认所述连接请求不符合第 二WebSocket预设格式;
[0015] 可选地,所述根据所述第二参数生成符合所述第二WebSocket预设格式的连接请 求应答数据,具体为:所述模拟服务器根据所述第二参数生成将Http协议头升级为 WebSocket协议头形式的连接请求应答数据。
[0016] 可选地,所述步骤S1中,模拟服务器接收浏览器发送来的第一数据,具体为:所述 模拟服务器接收所述浏览器通过所述WebSocket连接发送来的第一数据;
[0017] 所述步骤S4中,将所述第二数据返回给所述浏览器,具体为:所述模拟服务器将所 述第二数据通过所述WebSocket连接返回给所述浏览器。
[0018] 可选地,所述判断所述第一数据是否符合第一 WebSocket预设格式,具体为:所述 模拟服务器判断所述第一数据是否符合WebSocket数据帖格式,是则确认所述第一数据符 合第一 WebSocket预设格式,否则确认所述第一数据不符合第一 WebSocket预设格式;
[0019] 所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第 二数据,具体为:所述模拟服务器将所述操作结果组织得到所述WebSocket数据帖格式的第 二数据。
[0020] 可选地,所述步骤S1中,所述解析所述第一数据得到通讯参数,具体为:所述模拟 服务器解析所述第一数据得到数据域,根据预设加密算法对所述数据域进行解密得到编码 数据,根据预设编码算法对所述编码数据进行解码得到所述通讯参数;
[0021] 所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第 二数据,具体为:所述模拟服务器根据所述预设编码算法对所述操作结果进行编码得到编 码操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一 WebSocket预设格式的第二数据。
[0022] 可选地,所述步骤S2中,所述模拟服务器根据所述通讯参数查找智能密钥设备的 驱动接口,具体为:所述模拟服务器根据所述通讯参数中指定的操作名称和/或模块标识 和/或接口标识查找与所述浏览器预先约定的智能密钥设备的驱动函数接口。
[0023] 可选地,所述步骤S2中,所述模拟服务器根据所述通讯参数查找智能密钥设备的 驱动接口,具体为:所述模拟服务器根据所述通讯参数中指定的操作名称,查找相应的预先 设定的智能密钥设备的驱动函数接口。
[0024] 可选地,所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥 设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备,具体为:
[0025] 所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,并将所 述通讯参数中指定的操作名称传入所述驱动接口,所述驱动接口根据所述操作名称组织相 应的操作指令,将所述操作指令发送给所述智能密钥设备;
[0026] 或者,
[0027] 所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱 动接口发送预先设定的指令给所述智能密钥设备。
[0028] 可选地,所述步骤S1之前,还包括:
[0029] 步骤N:模拟服务器接收浏览器发送来的第Ξ数据,判断所述第Ξ数据是否符合第 一 WebSocket预设格式,是则解析所述第Ξ数据得到通讯标识,否则报错,结束。
[0030] 可选地,所述步骤Ν中,所述解析所述第Ξ数据得到通讯标识之后,还包括:所述模 拟服务器创建与所述通讯标识对应的环境,并通过回调预设函数接口通知所述浏览器与所 述通讯标识对应的环境创建完成;
[0031] 所述步骤S1,具体为:模拟服务器接收浏览器发送来的第一数据和所述通讯标识, 判断所述第一数据是否符合第一 WebSocket预设格式,是则解析所述第一数据得到通讯参 数,执行步骤S2,否则报错,结束。
[0032] 可选地,所述步骤S1中,所述模拟服务器接收浏览器发送来的第一数据和所述通 讯标识之后,还包括:所述模拟服务器根据接收到的通讯标识查找与其对应的环境,判断是 否查找成功,是则判断所述第一数据是否符合第一 WebSocket预设格式,否则报错,结束;
[0033] 所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱 动接口,具体为:所述模拟服务器根据所述通讯参数在与所述通讯标识对应的环境中查找 并调用智能密钥设备的驱动接口。
[0034] 可选地,所述模拟服务器创建与所述通讯标识对应的环境,具体为:所述模拟服务 器分配存储区,将所述通讯标识与所述环境建立一一对应关系。
[0035] 可选地,所述步骤S2中,所述驱动接口发送相应指令给所述智能密钥设备并接收 所述智能密钥设备返回的操作结果,具体为:所述驱动接口发送相应指令给所述智能密钥 设备并接收所述智能密钥设备返回的应答数据;
[0036] 所述步骤S3中,所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合 所述第一 WebSocket预设格式的第二数据,具体为:所述模拟服务器解析所述驱动接口接收 到的应答数据得到操作结果,将所述操作结果组织得到符合所述第一 WebSocket预设格式 的第二数据。
[0037] 可选地,所述步骤S3之后,还包括:
[0038] 当所述浏览器操作页面未退出且继续访问所述智能密钥设备时,返回步骤S1;
[0039] 当所述浏览器操作页面退出时,断开所述WebSocket连接。
[0040] 可选地,所述断开所述WebSocket通连接,具体为:
[0041 ]所述模拟服务器接收到来自所述浏览器的预设断开连接状态码之后,返回断开连 接响应给所述浏览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket 连接断开成功;
[0042] 或者,
[0043] 所述模拟服务器向所述浏览器发送所述预设断开连接状态码,并断开连接,当所 述模拟服务器接收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
[0044] 另一方面,本发明还提供了一种浏览器访问智能密钥设备的装置,包括:
[0045] 第一接收模块,用于接收浏览器发送来的第一数据;
[0046] 第一判断模块,用于判断所述第一接收模块接收到的第一数据是否符合第一 WebSocket预设格式;
[0047] 第一解析模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一 数据符合第一 WebSocket预设格式时,解析所述第一数据得到通讯参数;
[0048] 报错模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据 不符合第一 WebSocket预设格式时,报错,结束;
[0049] 查找调用模块,用于根据所述第一解析模块得到通讯参数查找并调用智能密钥设 备的驱动接口;
[0050] 第一发送模块,用于在所述查找调用模块调用智能密钥设备的驱动接口之后,发 送相应指令给所述智能密钥设备;
[0051] 第二接收模块,用于接收所述智能密钥设备返回的操作结果;
[0052] 组织模块,用于将所述第二接收模块接收到的操作结果组织得到符合所述第一 WebSocket预设格式的第二数据;
[0053] 第二发送模块,用于将所述组织模块得到的第二数据返回给所述浏览器。
[0054] 可选地,所述装置还包括:
[0055] 第一创建模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,同 浏览器建立WebSocket连接。
[0056] 可选地,所述第一创建模块,具体包括:
[0057] 接收单元,用于接收所述浏览器发送来的连接请求;
[0058] 判断单元,用于判断所述接收单元接收到的连接请求是否符合第二WebSocket预 设格式;
[0059] 第一生成单元,用于当所述判断单元判断出所述接收单元接收到的连接请求符合 第二WebSocket预设格式时,根据所述连接请求中的第一参数生成第二参数;
[0060] 第二生成单元,用于根据所述第一生成单元生成的第二参数生成符合所述第二 WebSocket预设格式的连接请求应答数据;
[0061] 报错单元,用于当所述判断单元判断出所述接收单元接收到的连接请求不符合第 二WebSocket预设格式时,报错,结束;
[0062] 发送单元,用于将所述第二生成单元生成的所述第二WebSocket预设格式的连接 请求应答数据发送给所述浏览器,所述WebSocket连接建立成功。
[0063] 可选地,所述第一生成单元,具体用于:将所述第一参数与预设全局唯一变量进行 拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根 据预设编码算法对所述哈希值进行编码得到第二参数。
[0064] 可选地,所述判断单元,具体用于:判断所述连接请求是否为将化化协议头升级为 WebSocket协议头形式的连接请求,是则确认所述连接请求符合第二WebSocket预设格式, 否则确认所述连接请求不符合第二WebSocket预设格式;
[0065] 可选地,所述第二生成单元,具体用于:根据所述第二参数生成将化化协议头升级 为WebSocket协议头形式的连接请求应答数据。
[0066] 可选地,所述第一接收模块,具体用于:接收所述浏览器通过所述WebSocket连接 发送来的第一数据;
[0067] 所述第二发送模块,具体用于将所述第二接收模块接收到的所述操作结果通过所 述WebSocket连接返回给所述浏览器。
[0068] 可选地,所述第一判断模块,具体用于:在所述第一接收模块接收浏览器发送来的 第一数据之后,判断所述第一数据是否符合WebSocket数据帖格式,是则确认所述第一数据 符合第一 WebSocket预设格式,否则确认所述第一数据不符合第一 WebSocket预设格式;
[0069] 可选地,所述组织模块,具体用于:将所述第二接收模块接收到的操作结果组织得 到所述WebSocket数据帖格式的第二数据。
[0070] 可选地,所述第一解析模块,具体用于:解析所述第一数据得到数据域,根据预设 加密算法对所述数据域进行解密得到编码数据,根据预设编码算法对所述编码数据进行解 码得到所述通讯参数;
[0071] 所述组织模块,具体用于:根据所述预设编码算法对所述操作结果进行编码得到 编码操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一 WebSocket预设格式的第二数据。
[0072] 可选地,所述查找调用模块,具体用于:根据所述通讯参数中指定的操作名称和/ 或模块标识和/或接口标识查找与所述浏览器预先约定的智能密钥设备的驱动函数接口。
[0073] 可选地,所述查找调用模块,具体用于:根据所述通讯参数中指定的操作名称,查 找到相应的预先设定的智能密钥设备的驱动函数接口。
[0074] 可选地,所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设 备的驱动接口,并将所述通讯参数中指定的操作名称传入所述驱动接口;
[0075] 所述第一发送模块,具体用于:根据所述操作名称组织相应的操作指令,将所述操 作指令发送给所述智能密钥设备;
[0076] 或者,
[0077] 所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱 动接口;
[0078] 所述第一发送模块,具体用于:发送预先设定的指令给所述智能密钥设备。
[0079] 可选地,所述装置还包括:
[0080] 第Ξ接收模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,接 收浏览器发送来的第Ξ数据;
[0081] 第二判断模块,用于判断所述第Ξ接收模块接收到的第Ξ数据是否符合第一 WebSocket预设格式;
[0082] 第二解析模块,用于当所述第二判断模块判断出所述第Ξ接收模块接收到的第Ξ 数据符合第一 WebSocket预设格式时,解析所述第Ξ数据得到通讯标识;
[0083] 所述报错模块,还用于当所述第二判断模块判断出所述第Ξ接收模块接收到的第 Ξ数据不符合第一 WebSocket预设格式时,报错,结束。
[0084] 可选地,所述装置还包括:
[0085] 第二创建模块,用于在所述第二解析模块解析所述第Ξ数据得到通讯标识之后, 创建与所述通讯标识对应的环境;
[0086] 调用模块,用于在所述第二创建模块创建与所述通讯标识对应的环境之后,回调 预设函数接口通知所述浏览器与所述通讯标识对应的环境创建完成;
[0087] 所述第一接收模块,具体用于:接收浏览器发送来的第一数据和所述通讯标识。 [008引可选地,所述装置还包括:
[0089] 第Ξ判断模块,用于在所述第一接收模块接收浏览器发送来的第一数据和所述通 讯标识之后,根据接收到的通讯标识查找与其对应的环境,判断是否查找成功;
[0090] 所述第一判断模块,具体用于当所述第Ξ判断模块判断出查找成功时,判断所述 第一数据是否符合第一 WebSocket预设格式;
[0091] 所述报错模块,还用于当所述第Ξ判断模块判断出查找不成功时,报错,结束;
[0092] 所述查找调用模块,具体用于根据所述第一解析模块得到的通讯参数在与所述通 讯标识对应的环境中查找并调用智能密钥设备的驱动接口。
[0093] 可选地,所述第二创建模块,具体用于:分配存储区,将所述通讯标识与所述环境 建立一一对应关系。
[0094] 可选地,所述第二接收模块,具体用于:接收所述智能密钥设备返回的应答数据;
[0095] 所述组织模块,具体用于:解析所述第二接收模块接收到的应答数据得到操作结 果,将所述操作结果组织得到符合所述第一 WebSocket预设格式的第二数据。
[0096] 可选地,所述装置还包括:断开模块;
[0097] 所述第一接收模块,还用于在所述第二发送模块将所述第二接收模块接收到的操 作结果返回给所述浏览器之后,当所述浏览器操作页面未退出且继续访问所述智能密钥设 备时,继续接收所述浏览器发送来的第一数据;
[0098] 所述断开模块,用于在所述发送模块将所述第二接收模块接收到的操作结果返回 给所述浏览器之后,当所述浏览器操作页面退出时,断开所述WebSocket连接。
[0099] 可选地,所述断开模块,具体用于:
[0100] 接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响应给所述浏 览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接断开成功;
[0101] 或者,
[0102] 向所述浏览器发送所述预设断开连接状态码,并断开连接,当所述模拟服务器接 收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
[0103] 本发明与现有技术相比,具有W下优点:擬弃了控件作为媒介使用智能密钥设备 的传统方法,能够有效的兼容如IE10、firefox lUchromeAUsafari 6及其W上版本的新 型浏览器,进行基于浏览器使用智能密钥设备进行身份认证、修改信息等一系列操作。
【附图说明】
[0104] 为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W 根据运些附图获得其他的附图。
[0105] 图1为本发明实施例一提供的一种浏览器访问智能密钥设备的方法流程图;
[0106] 图2为本发明实施例二提供的一种浏览器访问智能密钥设备的方法中步骤101至 步骤120的流程图;
[0107] 图3为本发明实施例二提供的一种浏览器访问智能密钥设备的方法中步骤121至 步骤127的流程图;
[0108] 图4为本发明实施例Ξ提供的一种浏览器访问智能密钥设备的方法中模拟服务器 的工作流程图;
[0109] 图5为本发明实施例四提供的一种建立WebSocket连接的方法流程图;
[0110] 图6为本发明实施例五提供的一种浏览器访问智能密钥设备的装置方框图。
【具体实施方式】
[0111] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
[0112] 在本发明中,浏览器主机内安装有模拟服务器,并且模拟服务器的IP地址和端口 号预先设定。
[0113] 实施例一
[0114] 本发明实施例一提供一种浏览器访问智能密钥设备的实现方法,如图1所示,包 括:
[0115] 步骤101:模拟服务器接收浏览器发送来的第一数据,判断第一数据是否符合第一 WebSocket预设格式,是则解析第一数据得到通讯参数,执行步骤102,否则报错,结束;
[0116] 在本实施例中,步骤101之前,还包括:
[0117] 步骤a:模拟服务器与浏览器创建WebSocket连接;
[011引在本实施例中,步骤a具体包括:
[0119] 步骤al:模拟服务器接收浏览器发送来的连接请求,判断所述连接请求是否符合 第二WebSocket预设格式,是则根据连接请求中的第一参数生成第二参数,根据第二参数生 成符合第二WebSocket预设格式的连接请求应答数据,否则报错,结束;
[0120] 在本实例中,第二WebSocket预设格式,具体为:将化化协议头升级为WebSocket协 议头;
[0121] 例如,在本实施例中,模拟服务器接收到的连接请求为:
[0122] GET/chat HTTP/1.1
[0123] H〇st:127.0.0.1:1237
[0124] Upgrade:Websocket [01 巧]Connection:Upgrade
[01%] Sec-WebSocket-K 巧:dGhlIHNhbXBsZSBub25jZQ= =
[0127] Sec-WebSocket-Version:13 [012引 其中,
[0129] 化St: 127.0.0.1:1237,表示模拟服务器的IP地址及端口号;
[0130] Upgrade :Websocket,表示连接请求为 WebSocket 连接请求;
[OKI] Sec-WebSocket-Key :dGhlIHNhbXBsZSBub25jZQ ==,表示第一参数为 dGhlIHNhbXBsZSBub25jZQ==;
[0132] 进一步地,根据连接请求中的第一参数生成第二参数,具体为:将第一参数与预设 全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对得到的拼接字符串进行哈希 运算得到哈希值,根据预设编码算法对得到的哈希值进行编码得到第二参数.
[0133] 优选的,在本实施例中,预设全局唯一变量为258EAFA5-E914-47DA-95CA- C5AB0DC85B11,生成的第二参数为:s:3pPLMBiTxaQ9kYGzzhZRbK+xOo=,生成的连接请求应 答数据为:
[0134] HTTP/1.1 lOlSwitching Protocols [01:35] Upgrade :websocket
[0136] Connection: Upgrade
[0137] Sec-WebSocket-Acc邱t:s3pPLMBiTxaQ9kYGzzhZ肺K+xOo =。
[0138] 步骤a2:模拟服务器将生成的第二WebSocket预设格式的连接请求应答数据发送 给浏览器,WebSocket连接创建成功;
[0139] 在本实施例中,模拟服务器接收浏览器发送来的第一数据,具体为:模拟服务器接 收浏览器通过WebSocket连接发送来的第一数据;
[0140] 进一步地,在本实施例中,模拟服务器判断第一数据是否符合第一WebSocket预设 格式,具体为:模拟服务器判断第一数据是否符合WebSocket数据帖格式,是则确认第一数 据符合第一 WebSocket预设格式,否则确认第一数据不符合第一 WebSocket预设格式;
[0141 ]在本实施例中,模拟服务器解析第一数据得到通讯参数,具体为:模拟服务器解析 第一数据得到其数据域,根据预设加密算法对得到的数据域进行解密得到编码数据,根据 预设编码算法对得到的编码数据进行解码得到通讯参数;
[0142] 更进一步地,在本实施例中,步骤101之前,还包括:
[0143] 步骤N:模拟服务器接收浏览器发送来的第Ξ数据,判断第Ξ数据是否符合第一 WebSocket预设格式,是则解析第Ξ数据得到通讯标识,否则报错,结束。
[0144] 在本实施例中,模拟服务器解析第一数据得到通讯标识之后,还包括:模拟服务器 创建与通讯标识对应的环境,并通过回调预设函数接口通知浏览器与通讯标识对应的环境 已创建完成;
[0145] 在本实施例中,模拟服务器创建与通讯标识对应的环境,具体为:模拟服务器分配 存储区,并将得到的通讯标识与创建的环境建立一一对应关系
[0146] 步骤101具体为:模拟服务器接收浏览器通过WebSocket通道发送来的第一数据和 通讯标识,判断第一数据是否符合第一 WebSocket预设格式,是则解析第一数据得到通讯参 数,执行步骤102,否则报错,结束;
[0147] 更加具体地,模拟服务器接收浏览器发送来的第一数据和通讯标识之后,还包括: 模拟服务器根据接收到的通讯标识查找与其对应的环境,判断是否查找成功,是则判断第 一数据是否符合第一 WebSocket预设格式,否则报错,结束。
[0148] 步骤102:模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口,驱动接 口发送相应指令给智能密钥设备并接收智能密钥设备返回的操作结果;
[0149] 在本实施例中,模拟服务器根据通讯参数查找智能密钥设备的驱动接口,可W为: 模拟服务器根据通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与浏览器 预先约定的智能密钥设备的驱动函数接口;
[0150] 在本实施例中,模拟服务器根据通讯参数查找智能密钥设备的驱动接口,还可W 为:模拟服务器根据通讯参数中指定的操作名称,查找相应的预先设定的智能密钥设备的 驱动函数接口。
[0151] 进一步地,在本实施例中,模拟服务器根据通讯参数查找并调用智能密钥设备的 驱动接口,所述驱动接口发送相应指令给所述智能密钥设备,可W为:模拟服务器根据通讯 参数查找并调用智能密钥设备的驱动接口,并将通讯参数中指定的操作名称传入驱动接 口,驱动接口根据操作名称组织相应的操作指令,将得到的操作指令发送给智能密钥设备;
[0152] 在本实施例中,模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口, 所述驱动接口发送相应指令给所述智能密钥设备,还可W为:模拟服务器根据通讯参数查 找并调用智能密钥设备的驱动接口,驱动接口发送预先设定的指令给智能密钥设备;
[0153] 更进一步地,在本实施例中,驱动接口接收智能密钥设备返回的应答数据还可W 为:驱动接口接收智能密钥设备返回的应答数据。
[0154] 步骤103:模拟服务器将驱动接口接收到的操作结果组织得到符合所述第一 WebSocket预设格式的第二数据,将所述第二数据返回给所述浏览器;
[01W]具体地,模拟服务器根据预设编码算法将驱动接口接收到的操作结果进行编码, 得到编码操作结果,再根据预设加密算法对得到的编码操作结果进行加密得到第一 WebSocket预设格式的第二数据,将第二数据通过WebSocket连接返回给浏览器;
[0156] 进一步地,在本实施例中,当步骤102中驱动接口接收所述智能密钥设备返回的操 作结果,具体为驱动接口接收智能密钥设备返回应答数据时,
[0157] 相应地,步骤103中,所述模拟服务器将所述驱动接口接收到的操作结果组织得到 符合第一 WebSocket预设格式的第二数据,具体为:所述模拟服务器解析驱动接口接收到的 应答数据得到操作结果,并将得到的操作结果组织得到符合所述第一 WebSocket预设格式 的第二数据。
[0158] 更进一步地,在本实施例中,步骤103之后,还包括:当浏览器操作页面未退出且继 续访问智能密钥设备时,模拟服务器返回步骤101;当浏览器操作页面退出时,断开 WebSocket连接,模拟服务器释放存储空间;
[0159] 在本实施例中,断开WebSocket连接,具体为:
[0160] 模拟服务器接收到来自浏览器的预设断开连接状态码之后,返回断开连接响应给 浏览器,并断开连接,当浏览器接收到断开连接响应时,WebSocket连接断开成功;
[0161] 或者,
[0162] 模拟服务器向浏览器发送预设断开连接状态码,并断开连接,当模拟服务器接收 到浏览器返回的断开连接响应时,WebSocket连接断开成功。
[0163] 实施例二
[0164] 本发明实施例二提供一种浏览器访问智能密钥设备的实现方法,如图2和图3所 示,包括:
[0165] 步骤201:浏览器进入调用智能密钥设备进行操作的页面;
[0166] 例如:网银登录页面、修改密码页面、签名页面等;
[0167] 优选地,在本实施例中,W获取智能密钥设备序列号为例进行说明,浏览器进入获 取智能密钥设备序列号的页面。
[0168] 步骤202:浏览器判断本次操作是否为第一次操作,是则执行步骤203,否则执行步 骤 212;
[0169] 具体地,浏览器判断WebSocket连接标识是否置位,是则确认本次操作不是第一次 操作,否则确认本次操作是第一次操作;
[0170] 优选地,在本实施例中,当WebSocket连接标识为1时,确认置位,当WebSocket连接 标识为0时,确认为置位。
[0171 ]步骤203:浏览器判断模拟服务器是否可用,是则执行步骤204,否则结束;
[0172] 具体地,浏览器通过"IP地址加端口号"的形式连接模拟服务器的访问地址,当浏 览器接收到连接成功信息时,确认模拟服务器可用,当浏览器接收到连接失败信息时,确认 模拟服务器不可用,结束;
[0173] 优选的,预先设定模拟服务器的IP地址为127.0.0.1,端口号为1237;
[0174] 浏览器连接模拟服务器的访问地址,具体为:ws://127.0.0.1:1237/。
[01巧]步骤204:浏览器同模拟服务器之间建立WebSocket连接,并判断WebSocket连接是 否建立成功,是则执行步骤205,否则结束;
[0176] 浏览器同模拟服务器之间创建WebSocket连接的过程,详见实施例四,在此不再寶 述;
[0177] 进一步地,当判断WebSocket连接建立成功之后,还包括:浏览器将WebSocket连接 标识置位;
[0178] 具体地,浏览器将WebSocket连接标识置为1。
[0179] 步骤205:浏览器创建与本次调用智能密钥设备进行操作对应的通讯标识;
[0180] 在本实施例中,通讯标识为一段字符串,优选地,创建的通讯标识为 AD:MFC742340抓 D3。
[0181] 步骤206:浏览器根据第一 WebSocket预设格式将创建的通讯标识组织得到第Ξ数 据,并将得到的第Ξ数据通过WebSocket连接发送给模拟服务器;
[0182] 在本实施例中,第一WebSocket预设格式具体为WebSocket数据帖格式;
[0183] 优选地,在本实施例中,得到的第Ξ数据为:81 9c 9b b8 CC 5c eO 9a 98 33 fO dd a2 7e al 9a 8d 18 a8 8c 8a If ac 8c fe 6f af 88 8e 18 df 8b ee 21〇
[0184] 步骤207:模拟服务器接收第Ξ数据并判断其是否正确,是则执行步骤208,否则报 错,结束;
[0185] 具体地,模拟服务器解析接收到的第Ξ数据,判断其是否符合第一 WebSocket预设 格式,如果是,则确认接收到的第Ξ数据正确,否则,确认接收到的第Ξ数据错误;
[0186] 在本实施例中,步骤207之前,还包括:模拟服务器判断第Ξ数据是否为分帖数据, 如果是,则继续接收,并在接收完成之后,执行步骤207,否则执行步骤207;
[0187] 具体地,模拟服务器解析接收到的数据帖,当接收到的数据帖W2进制表示时,其 第一个字节为1并且第五个字节至第八个字节上的数据转换为16进制表示不为0x0时,确认 第Ξ数据未分帖;当接收到的数据帖W2进制表示时,其第一个字节为0并且第五个字节至 第八个字节上的数据转换为16进制表示不为0x0时,确认接收到的数据帖为第Ξ数据的起 始帖;当接收到的数据帖W2进制表示时,其第一个字节为0并且第五个字节至第八个字节 上的数据转换为16进制表示为0x0时,确认接收到的数据帖为第Ξ数据的中间帖;当接收到 的数据帖W2进制表示时,其第一个字节为1并且第五个字节至第八个字节上的数据转换为 16进制表示为0x0时,确认接收到的数据帖为第Ξ数据的结束帖,第Ξ数据接收完成。
[0188] 步骤208:模拟服务器解析接收到的第Ξ数据,得到第Ξ数据域;
[0189] 具体地,模拟服务器解析接收到的第Ξ数据得到第Ξ数据域的长度,根据得到的 第Ξ数据域的长度,读取数据得到第Ξ数据域;
[0190] 在本实施例中,模拟服务器解析接收到的第Ξ数据得到第Ξ数据域的长度,具体 为:当第Ξ数据转换成2进制表示时,模拟服务器读取第Ξ数据中第十个字节至第十六个字 节上的数据,并将其转换得到无符号整数,判断得到的无符号整数的值的范围,具体地:
[0191] 当得到的无符号整数的值不大于125时,确认该无符号整数的值即为数据域的长 度;
[0192] 当得到的无符号整数的值为126时,继续读取后面二个字节上的数据并转换得到 16位的无符号整数,得到的16位的无符号整数的值即为数据域的长度;
[0193] 当得到的无符号整数的值为127时,继续读取后面八个字节上的数据并转化得到 64位的无符号整数,得到的64位的无符号整数的值即为数据域的长度。
[0194] 步骤209:模拟服务器对得到的第Ξ数据域进行解密操作,得到第Ξ编码数据; [01Μ]具体地,模拟服务器根据预设加密算法对得到的第Ξ数据域进行解密,得到第Ξ 编码数据;
[0196] 优选地,预设加密算法为化S1.2算法,得到的第Ξ编码数据为:
[0197] var JsonSend={
[0198] Token: "AD34FC742:M0B孤3"
[0199] }。
[0200] 步骤210:模拟服务器对得到的第Ξ编码数据进行解码操作,得到通讯标识;
[0201] 具体地,模拟服务器根据预设编码算法对得到的第Ξ编码数据进行解码,得到通 讯标识,优选地,在本实施例中,预设编码算法为Base64编码算法,得到的通讯标识为: AD:MFC742340抓 D3。
[0202] 步骤211:模拟服务器根据得到的通讯标识,创建与其对应的上下文环境,执行步 骤 214;
[0203] 具体地,模拟服务器分配存储区,记录智能密钥设备的类型,提供智能密钥设备的 驱动等,并将接收到的通讯标识与创建的上下文环境建立唯一对应关系;
[0204] 在本实施例中,模拟服务器根据接收到的通讯标识,创建与其对应的上下文环境 之后,还包括:模拟服务器通过回调函数接口通知浏览器与通讯标识对应的上下文环境创 建完成。
[0205] 步骤212:浏览器组织调用智能密钥设备的通讯参数,并将其进行编码,得到编码 参数;
[0206] 具体地,浏览器接收到函数接口的通知后,组织调用智能密钥设备的通讯参数,并 将组织的通讯参数按照预设格式进行编码,得到编码参数;
[0207] 例如,当本次调用智能密钥设备进行获取智能密钥设备序列号操作时,优选的,得 到的编码参数为:
[020引
[0209] 步骤213:浏览器根据第一 WebSocket预设格式将得到的编码参数组织得到第一数 据,并将得到的第一数据和通讯标识一同通过WebSocket连接发送给模拟服务器;
[0210] 优选地,在本实施例中,浏览器根据上述编码参数,得到的第一数据为:81 ee 00 ac 5f 98 7b 8e 12 f7 64 d9 33 fd 22 96 7d df 65 d8 Ob f7 6b c9 31 dl 6e ca 30 b6 64 cO 33 ba 2c 8e 12 fd 74 c4 30 fc 22 96 7d df 65 d8 Ob f7 6b c9 31 cb 4e 8e 73 ba 44 cd 化 f9 54 d5 2f fd 22 96 7d cb 74 de 36 f6 67 8e 73 ba 50 9d 6e d6 61 cl 3a ba 3a 8e 3a c8 61 df 2c d9 75 d8 30 fb 73 dc 6e a9 5f ed Id db 68 c5 31 f9 2e c8 33 f4 22 dl〇
[0211] 步骤214:模拟服务器等待并接收浏览器发送的通讯标识和第一数据,根据接收到 的通讯标识查找与其对应的上下文环境,判断是否查找成功,是则执行步骤215,否则报错, 结束;
[0212] 在本实施例中,当模拟服务器接收到浏览器发送的通讯标识和第一数据时,根据 接收到的通讯标识查找与其对应的上下文环境之前,还包括:
[0213] 模拟服务器判断第一数据是否为分帖数据,如果是,则继续接收,并在接收完成之 后,根据接收到的通讯标识查找与其对应的上下文环境,否则根据接收到的通讯标识查找 与其对应的上下文环境。
[0214] 步骤215:模拟服务器判断接收到的第一数据是否正确,是则执行步骤216,否则报 错,结束;
[0215] 具体地,模拟服务器判断接收到的第一数据是否符合第一 WebSocket预设格式,如 果是,则确认接收到的第一数据正确,否则,确认接收到的第一数据错误。
[0216] 步骤216:模拟服务器解析接收到的第一数据,得到第一数据域;
[0217] 具体地,模拟服务器解析接收到的第一数据得到第一数据域的长度,根据得到的 第一数据域长度,读取数据得到第一数据域;
[0218] 在本实施例中,模拟服务器解析接收到的第一数据得到第一数据域的长度的方法 同步骤208中所述的得到第Ξ数据域的长度的方法相同。
[0219] 步骤217:模拟服务器对得到的第一数据域进行解密操作,得到编码数据;
[0220] 具体地,模拟服务器根据预设算法对得到的第一数据域进行解密操作,得到编码 数据;
[0221] 优选的,在本实施例中,预设算法为化S1.2算法;得到的编码数据为:
[0222]
[0223]
[0224] 步骤218:模拟服务器对得到的编码数据进行解码操作,得到通讯参数;
[0225] 具体地,模拟服务器根据预设编码算法对得到的编码数据进行解码操作,得到通 讯参数,优选的,预设编码算法为Base64编码算法;
[0226] 在本实施例中,根据上述得到的编码数据得到的通讯参数具体为:通过 GetTokenInf 0. dll模块中的GetTokenSN方法,调用P1 IName动态库,并通过P1 IName动态库 中约定的驱动接口来调用智能密钥设备获取智能密钥设备序列号,并且数据类型为字符 串;
[0227] 进一步地,在本实施例中,根据操作系统的不同,PllName动态库还可W为CSP动态 库。
[0228] 步骤219:模拟服务器根据得到的通讯参数在与通讯标识对应的上下文环境中查 找智能密钥设备的驱动接口,并判断是否查找成功,是则执行步骤220,否则报错,结束;
[0229] 在本实施例中,智能密钥设备的每一个功能对应一个驱动接口;
[0230] 具体地,模拟服务器根据通讯参数中指定的操作名称和/或模块标识和/或接口标 识查找与浏览器预先约定的智能密钥设备的驱动函数接口;
[0231] 例如,在本实施例中,模拟服务器根据解码得到的上述通讯参数在查找到的上下 文环境中通过GetTokenInf o.dll模块中的GetTokenSN方法调用P1 IName动态库,查找 PllName动态库中约定的获取序列号驱动函数接口,并判断是否查找到所述获取序列号驱 动函数接口,是则执行步骤220,否则报错,结束。
[0232] 进一步地,在本实例中,通讯参数还可W为本次访问智能密钥设备进行操作的操 作名称,模拟服务器根据通讯参数中指定的操作名称,查找到相应的预定设定的驱动函数 接口;例如,模拟服务器根据通讯参数中指定的操作名称获取智能密钥设备序列号,查找到 预先设定的获取序列号驱动函数接口。
[0233] 步骤220:模拟服务器调用查找到的智能密钥设备的驱动接口,驱动接口发送相应 的指令给智能密钥设备;
[0234] 具体地,模拟服务器调用查找到的智能密钥设备的驱动,驱动接口发送预先设定 的指令给所述智能密钥设备;
[0235] 例如,在本实施例中,模拟服务器通过调用PllName动态库中约定的获取序列号驱 动函数接口,所述获取序列号驱动函数接口发送预先设定的获取序列号指令给智能密钥设 备。
[0236] 在本实施例中,步骤220还可W为:模拟服务器调用查找到的智能密钥设备的驱动 接口,并将通讯参数中指定的操作名称传入驱动接口,驱动接口根据操作名称组织相应的 操作指令并发送给智能密钥设备。
[0237] 步骤221:智能密钥设备接收指令,解析并执行相应操作得到操作结果,根据得到 的操作结果生成应答数据并返回给驱动接口;
[0238] 例如,在本实施例中,智能密钥设备解析接收到的指令,读取其内部保存的序列 号,并根据读取到的序列号生成应答数据,通过回调驱动函数接口,将生成的应答数据返回 给驱动接口;
[0239] 进一步地,在本实施例中,步骤221还可W为:
[0240] 步骤221':智能密钥设备接收指令,解析并执行相应操作得到操作结果,并将得到 的操作结果返回给驱动接口。
[0241] 步骤222:驱动接口接收智能密钥设备返回的应答数据;
[0242] 在本实施例中,当步骤221具体为步骤221'时,步骤222具体为:驱动接口接收智能 密钥设备返回的操作结果。
[0243] 步骤223:模拟服务器解析驱动接口接收到的应答数据得到操作结果,并对得到的 操作结果进行编码,得到编码操作结果;
[0244] 具体地,模拟服务器根据预设编码算法将得到的操作结果进行编码操作,得到编 码操作结果;
[0245] 优选的,预设编码算法为Base64编码算法,模拟服务器解析应答数据得到智能密 钥设备序列号为210100000001,得到的编码操作结果为:
[0246]
[0247] 步骤224:模拟服务器根据第一 WebSocket预设格式将得到的编码操作结果组织得 到第二数据,并将得到的第二数据通过WebSocket连接发送给浏览器;
[0248] 优选的,在本实施例中,得到的第二数据为81 e8 fa c2 34 c8 81 eO 79 a7 9e b7 58 ad d8 f8 16 8f 9f b6 60 a7 91 a7 5a 81 94 a4 5b e6 9e ae 58 ea d6 eO 79 ad 8e aa 5b ac d8 f8 16 8f 9f b6 60 a7 91 a7 5a 9b b4 eO 18 ea a8 a7 47 bd 96 b6 16 f2 cb ee 16 8c 9b b6 55 9c 83 b2 51 ea cO eO 67 be 88 ab 5a af d8 ee 16 8c 9b b6 55 ea cO eO 06 f9 ca f3 04 f8 ca f2 04 f8 ca f3 16 b5〇
[0249] 步骤225:浏览器等待并接收模拟服务器返回的第二数据,解析第二数据得到第二 数据域;
[0250]具体地,浏览器解析接收到的第二数据得到第二数据域的长度,根据得到的第二 数据域长度,读取数据得到第二数据域。
[0251 ]步骤226:浏览器对得到的第二数据域进行解密操作,得到编码操作结果;
[0252] 具体地,浏览器根据预设算法对得到的第二数据域进行解密操作,得到编码操作 结果,优选的,在本实施例中,预设算法为化S1.2算法。
[0253] 步骤227:浏览器对得到的编码操作结果进行解码操作,得到操作结果并显示在操 作页面中。
[0254] 具体地,浏览器根据预设编码算法对得到的编码操作结果进行解码操作,得到调 用智能密钥设备进行操作的操作结果,优选的,预设编码算法为Base64编码算法;
[0255] 在本实施例中,浏览器对得到的编码操作结果进行解码操作得到的智能密钥设备 序列号210100000001,并将其显示在操作页面中。
[0256] 更进一步地,在本实施例中,当本次调用智能密钥设备进行签名操作时,优选的, 在步骤212中得到的编码参数为:
[0 巧 7]
[0259]根据上述编码参数,在步骤218中,模拟服务器得到的访问智能密钥设备的参数具 体为:通过"FT_Si即.dll模块中的SignMessage方法,调用EnterSafe eF*assAuto CSP For AB化ina vl.O中约定的智能密钥设备的驱动接口,即签名驱动函数接口来调用智能密钥设 备对签名数据0200000000000000041001010000000000000000000000000000000200SN01001 1 转入账户号:SV0100139559900000001SN020011 转入账户名:SV020004张 SSN030009转账 金额:SV030006100.00SN040011 转出账户号:SV0400139559900000002SN050011 转出账户 名:SV050004李四DN060005附言:DV060006FTTESTn执行签名操作,并且数据类型为字符串。 [0260]步骤219具体为:模拟服务器根据解码得到的上述参数在与通讯标识对应的上下 文环境中查找化terSafe e化ssAuto CSP化r AB化ina vl.O及其约定签名驱动函数接口, 并判断是否查找到所述签名驱动函数接口,是则执行步骤220,否则报错,结束。
[0%1] 步骤220具体为:模拟服务器通过调用EnterSafe ePassAuto CSP ρ·〇Γ AB化ina vl.O中约定的签名驱动函数接口,所述签名驱动函数接口根据签名数据发送签名指令给智 能密钥设备;
[0262] 步骤221具体为:智能密钥设备解析接收到的APDU指令,得到签名数据,并根据预 设签名算法及私钥对得到的签名数据执行签名操作,当签名操作成功时,得到签名成功结 果,根据得到的签名成功结果生成签名成功应答数据,当签名操作失败时,得到签名失败结 果,根据得到的签名失败结果生成签名失败应答数据,通过回调签名驱动函数接口,将生成 的应答数据返回给签名驱动函数接口,优选的,在本实施例中,签名成功,得到的签名成功 结果为8076B6063F4D149CAE8CA4EBA12187E99F4EC9BBCC7092AF0C58814862BCE64DECA80E2 3334DBA2570CC93B2DA415F1B38340FE67CA135D166D9607596AEC AEC84EF4202D564CD73C383B56115C3CF7F028E邸E7291FFAE0FB10犯C35347061702083288CC :M9947F1DE317C11AB1F8E22EA8AA06802A25827孤273A489沈C18;
[0263] 步骤222至步骤223具体为:模拟服务器解析签名驱动函数接口接收到的应答数 据,得到上述签名成功结果,对得到的签名结果进行编码得到预设格式的编码结果,优选 地,得到的编码结果为:
[0264]
[0265] 步骤227具体为:浏览器对上述编码操作结果进行解码操作,得到签名成功的操作 结果,并在操作页面中显示签名成功;
[0266] 进一步地,在本实施例中,签名算法及签名密钥均为默认的,预先设定的,在步骤 212中组织编码参数时,还可W指定签名算法及签名密钥;
[0267] 更进一步地,在不指定签名算法及签名密钥时,当所访问的智能密钥设备支持多 种签名算法时,浏览器端还可W弹框显示多种签名算法及签名密钥供用户选择,智能密钥 设备根据用户选择的签名算法和签名密钥来对签名数据执行签名操作。
[0268] 在本实施例中,步骤227之后,还包括:当浏览器操作页面未退出且继续访问智能 密钥设备时,返回步骤214;当浏览器操作页面退出时,断开WebSocket连接,模拟服务器清 空存储区,其中,断开WebSocket连接的过程在实施例四中进行详述。
[0269] 实施例Ξ
[0270] 本发明实施例Ξ提供一种浏览器访问智能密钥设备的实现方法中模拟服务器的 工作流程,在本实施例中,W获取智能密钥设备序列号为例进行说明,当浏览器判断 WebSocket连接建立成功时,浏览器创建与本次访问智能密钥设备相关的通讯标识,并根据 第一 WebSocket预设格式将创建的通讯标识组织得到第Ξ数据,将得到的第Ξ数据通过 WebSocket连接发送给模拟服务器;如图4所示,模拟服务器执行W下操作:
[0271] 步骤301:模拟服务器等待并接收浏览器发送的第Ξ数据,并在接收到第Ξ数据之 后,执行步骤302;
[0272] 优选的,在本实施例中,接收到的第Ξ数据为:81 9c 9b b8 CC 5c eO 9a 98 33 fO dd a2 7e al 9a 8d 18 a8 8c 8a If ac 8c fe 6f af 88 8e 18 df 8b ee 21〇
[0273] 步骤302:模拟服务器判断接收到的第Ξ数据是否正确,是则执行步骤303,否则报 错,结束;
[0274] 具体地,模拟服务器判断接收到的第Ξ数据是否符合第一 WebSocket预设格式,如 果是,则确认接收到的第Ξ数据正确,否则,确认接收到的第Ξ数据错误;
[0275] 在本实施例中,步骤302之前,还包括:模拟服务器判断第Ξ数据是否为分帖数据, 如果是,则继续接收,并在接收完成之后,执行步骤302,否则执行步骤302;
[0276] 具体地,模拟服务器解析接收到的数据帖,当接收到的数据帖W2进制表示时,其 第一个字节为1并且第五个字节至第八个字节上的数据转换为16进制表示不为0x0时,确认 第Ξ数据未分帖;当接收到的数据帖W2进制表示时,其第一个字节为0并且第五个字节至 第八个字节上的数据转换为16进制表示不为0x0时,确认接收到的数据帖为第Ξ数据的起 始帖;当接收到的数据帖W2进制表示时,其第一个字节为0并且第五个字节至第八个字节 上的数据转换为16进制表示为0x0时,确认接收到的数据帖为第Ξ数据的中间帖;当接收到 的数据帖W2进制表示时,其第一个字节为1并且第五个字节至第八个字节上的数据转换为 16进制表示为0x0时,确认接收到的数据帖为第Ξ数据的结束帖,第Ξ数据接收完成。
[0277] 步骤303:模拟服务器解析接收到的第Ξ数据,得到第Ξ数据域;
[0278] 具体地,模拟服务器解析接收到的第Ξ数据得到第Ξ数据域的长度,根据得到的 第Ξ数据域的长度,读取数据得到第Ξ数据域;
[0279] 在本实施例中,模拟服务器解析接收到的第Ξ数据得到第Ξ数据域的长度,具体 为:当第Ξ数据转换成2进制表示时,模拟服务器读取第Ξ数据中第十个字节至第十六个字 节上的数据,并将其转换得到无符号整数,判断得到的无符号整数的值的范围,具体地:
[0280] 当得到的无符号整数的值不大于125时,确认无符号整数的值即为数据域的长度;
[0281] 当得到的无符号整数的值为126时,继续读取后面二个字节上的数据并转换得到 16位的无符号整数,得到的16位的无符号整数的值即为数据域的长度;
[0282] 当得到的无符号整数的值为127时,继续读取后面八个字节上的数据并转化得到 64位的无符号整数,得到的64位的无符号整数的值即为数据域的长度。
[0283] 步骤304:模拟服务器对得到的第Ξ数据域进行解密操作,得到第Ξ编码数据;
[0284] 具体地,模拟服务器根据预设加密算法对得到的第Ξ数据域进行解密,得到第Ξ 编码数据;
[0285] 优选的,预设加密算法为化S1.2算法,得到的第Ξ编码数据为:
[02化]var JsonSend={
[0287] Token: "AD34FC742:M0B孤3"
[028引}。
[0289] 步骤305:模拟服务器对得到的第Ξ编码数据进行解码操作,得到通讯标识;
[0290] 具体地,模拟服务器根据预设编码算法对得到的第Ξ编码数据进行解码,得到通 讯标识,优选地,在本实施例中,预设编码算法为Base64编码算法,得到的通讯标识为: AD:MFC742340抓 D3;
[0291] 步骤306:模拟服务器根据得到的通讯标识,创建与其对应的上下文环境;
[0292] 在本实施例中,模拟服务器根据得到的通讯标识,创建与其对应的上下文环境,具 体为:模拟服务器分配存储区,并将得到的通讯标识与其建立唯一对应关系;
[0293] 在本实施例中,模拟服务器根据接收到的通讯标识,创建与其对应的上下文环境 之后,还包括:模拟服务器通过回调函数接口通知浏览器与通讯标识对应的上下文环境创 建完成。
[0294] 步骤307:模拟服务器等待并接收浏览器发送来的通讯标识和第一数据,根据接收 到的通讯标识查找与其对应的上下文环境,判断是否查找成功,是则执行步骤308,否则报 错,结束;
[02%]在本实施例中,当模拟服务器接收到浏览器发送的通讯标识和第一数据时,根据 接收到的通讯标识查找与其对应的上下文环境之前,还包括:
[0296] 模拟服务器判断第一数据是否为分帖数据,如果是,则继续接收,并在接收完成之 后,根据接收到的通讯标识查找与其对应的上下文环境,否则根据接收到的通讯标识查找 与其对应的上下文环境。
[0297] 优选地,在本实施例中,接收到的第一数据具体为:81 ee 00 ac 5f 98 7b 8e 12 f7 64 d9 33 fd 22 96 7d df 65 d8 Ob f7 6b c9 31 dl 6e ca 30 b6 64 cO 33 ba 2c 8e 12 fd 74 c4 30 fc 22 96 7d df 65 d8 Ob f7 6b c9 31 cb 4e 8e 73 ba 44 cd 2b f9 54 d5 2f fd 22 96 7d cb 74 de 36 f6 67 8e 73 ba 50 9d 6e d6 61 cl 3a ba 3a 8e 3a c8 61 df 2c d9 75 d8 30 fb 73 dc 6e a9 5f ed Id db 68 c5 31 f9 2e c8 33 f4 22 dlo
[0298] 步骤308:模拟服务器判断接收到的第一数据是否正确,是则执行步骤309,否则报 错;
[0299] 具体地,模拟服务器判断接收到的第一数据是否符合第一 WebSocket预设格式,如 果是,则确认接收到的第一数据正确,否则,确认接收到的第一数据错误。
[0300] 步骤309:模拟服务器解析接收到的第一数据,得到第一数据域;
[0301] 具体地,模拟服务器解析接收到的第一数据得到第一数据域的长度,根据得到的 第一数据域长度,读取数据得到第一数据域;
[0302] 在本实施例中,模拟服务器解析接收到的第一数据得到第一数据域的长度的方法 同步骤303中所述的得到第Ξ数据域的长度的方法相同。
[0303] 步骤310:模拟服务器对得到的第一数据域进行解密操作,得到编码数据;
[0304] 具体地,模拟服务器根据预设算法对得到的第一数据域进行解密操作,得到编码 数据;优选的,在本实施例中,预设算法为化S1.2算法,得到的编码数据为:
[0305]
[0306] 步骤311:模拟服务器对得到的编码数据进行解码操作,得到通讯参数;
[0307] 具体地,模拟服务器根据预设编码算法对得到的编码数据进行解码操作,得到通 讯参数,优选的,预设编码算法为Base64编码算法;
[030引在本实施例中,根据上述得到的编码数据得到的通讯参数具体为:通过 GetTokenInf 0. dll模块中的GetTokenSN方法,调用P1 IName动态库,并通过P1 IName动态库 中约定的驱动接口来调用智能密钥设备获取智能密钥设备序列号,并且数据类型为字符 串。
[0309] 步骤312:模拟服务器根据得到的通讯参数在查找到的上下文环境中查找智能密 钥设备的驱动接口,并判断是否查找成功,是则执行步骤313,否则报错,结束;
[0310] 在本实施例中,智能密钥设备的每一个功能对应一个驱动接口;
[0311] 具体地,模拟服务器根据通讯参数中指定的操作名称和/或模块标识和/或接口标 识查找与浏览器预先约定的智能密钥设备的驱动函数接口;
[0312] 例如,在本实施例中,模拟服务器根据解码得到的上述通讯参数在查找到的上下 文环境中通过GetTokenInf o.dll模块中的GetTokenSN方法调用P1 IName动态库,查找 PllName动态库中约定的获取序列号驱动函数接口,并判断是否查找到所述获取序列号驱 动函数接口,是则执行步骤313,否则报错,结束。
[0313] 进一步地,在本实例中,通讯参数还可W为本次访问智能密钥设备进行操作的操 作名称,模拟服务器根据通讯参数中指定的操作名称,查找到相应的预先设定的驱动函数 接口;例如,模拟服务器根据通讯参数中指定的操作名称获取智能密钥设备序列号,查找到 预先设定的获取序列号驱动函数接口。
[0314] 步骤313:模拟服务器调用查找到的智能密钥设备的驱动接口,驱动接口发送相应 的指令给智能密钥设备并接收智能密钥设备返回的应答数据;
[0315] 具体地,模拟服务器调用查找到的智能密钥设备的驱动接口,驱动接口发送预先 设定的指令给所述智能密钥设备;
[0316] 例如,在本实施例中,模拟服务器通过调用PllName动态库中约定的获取序列号驱 动函数接口,所述获取序列号驱动函数接口发送获取序列号指令给智能密钥设备;
[0317] 在本实施例中,步骤313还可W为:模拟服务器调用查找到的智能密钥设备的驱动 接口,并将通讯参数中指定的操作名称传入驱动接口,驱动接口根据操作名称组织相应的 操作指令并发送给所述智能密钥设备。
[0318] 需要说明地,智能密钥设备接收到指令之后,解析并执行相应操作得到操作结果, 并根据得到的操作结果组织得到应答数据,通过回调驱动函数接口,将生成的应答数据返 回给驱动接口;
[0319] 进一步地,智能密钥设备接收到指令之后,还可W为:解析并执行相应操作得到操 作结果,并将得到的操作结果返回给驱动接口。
[0320] 步骤314:模拟服务器解析驱动接口接收到的应答数据得到操作结果,并对得到的 操作结果进行编码,得到编码操作结果;
[0321] 具体地,模拟服务器根据预设编码算法将得到的操作结果进行编码操作,得到编 码操作结果;
[0322] 优选地,预设编码算法为Base64编码算法,模拟服务器解析接收到应答数据,得到 智能密钥设备序列号210100000001,得到的编码操作结果为:
[0323]
[0324] 进一步地,当步骤313中驱动接口接收智能密钥设备返回的应答数据,具体为:驱 动接口接收智能密钥设备返回的操作结果时,
[0325] 相应地,步骤314具体为:模拟服务器将驱动接口接收到的操作结果进行编码,得 到编码操作结果。
[03%]步骤315:模拟服务器根据第一 WebSocket预设格式将得到的编码操作结果组织得 到第二数据,并将得到的第二数据通过WebSocket连接发送给浏览器;
[0327] 优选地,在本实施例中,得到的第Ξ数据为81 e8 fa c2 34 c8 81 eO 79 a7 9e b7 58 ad d8 f8 16 8f 9f b6 60 a7 91 a7 5a 81 94 a4 5b e6 9e ae 58 ea d6 eO 79 ad 8e aa 5b ac d8 f8 16 8f 9f b6 60 a7 91 a7 5a 9b b4 eO 18 ea a8 a7 47 bd 96 b6 16 f2 cb ee 16 8c 9b b6 55 9c 83 b2 51 ea cO eO 67 be 88 ab 5a af d8 ee 16 8c 9b b6 55 ea cO eO 06 f9 ca f3 04 f8 ca f2 04 f8 ca f3 16 b5〇 [03%]在本实施例中,步骤316之后,还包括:当浏览器操作页面未退出且继续访问智能 密钥设备时,返回步骤307;当浏览器操作页面退出时,断开WebSocket连接,模拟服务器清 空存储区,其中,断开WebSocket连接的过程在实施例四中进行详述。
[0329] 实施例四
[0330] 本发明实施例四提供一种建立WebSocket连接的方法,如图5所示,包括:
[0331] 步骤401:浏览器进入操作页面,并生成预设长度的随机数;
[0332] 优选地,在本实施例中,浏览器生成16位的随机数。
[0333] 步骤402:浏览器根据预设算法对生成的随机数进行编码,得到第一参数;
[0334] 优选的,在本实施例中,预设算法为Base64编码算法;
[0335] 步骤403:浏览器根据得到第一参数生成第二WebSocket预设格式的连接请求,并 发送给模拟服务器;
[0336] 优选地,在本实施例中,预先设定模拟服务器的IP地址为127.0.0.1,端口号为 1237;
[0337] 在本实施例中,第二WebSocket预设格式具体为:将化化协议头升级为WebSocket 协议头形式的数据;
[0338] 例如,在本实施例中,生成的连接请求为:
[0339] GET/chat HTTP/1.1
[0340] Host:127.0.0.1:1237 [0;341] Upgrade :Websocket
[0342] Connection:Upgrade
[0343] Sec-WebSocket-K 巧:dGhlIHNhbXBsZSBub25jZQ= =
[0344] Sec-WebSocket-Version:13
[0345] 其中,
[O%6] 化St: 127.0.0.1:1237,表示模拟服务器的IP地址及端口号;
[0347] Upgrade :Websocket,表示连接请求为 WebSocket 连接请求;
[0348] Sec-WebSocket-Key :dGhlIHNhbXBsZSBub25jZQ==,表示第一参数为 dGhlIHNhbXBsZSBub25jZQ==。
[0349] 步骤404:模拟服务器启动监听,当监听到来自浏览器的连接请求时,判断连接请 求是否符合第二WebSocket预设格式,是则执行步骤405,否则报错,结束;
[0350] 步骤405:模拟服务器将接收到的连接请求中的第一参数与全局唯一变量进行拼 接得到第一拼接字符串;
[0351] 在本实施例中,全局唯一变量预先设定并保存在模拟服务器和浏览器中,例如,预 先设定的全局唯一变量为258EAFA5-E914-47DA-95CA-C5AB0DC85B11,得到的第一拼接字符 串为 dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85Bll。
[0352] 步骤406:模拟服务器根据预设哈希算法对得到的第一拼接字符串进行哈希运算 得到第一哈希值;
[0353] 优选的,在本实施例中,预设哈希算法为SHA-1;
[0354] 步骤407:模拟服务器根据预设编码算法对得到的第一哈希值进行编码,得到第二 参数,根据得到的第二参数生成第二WebSocket预设格式的连接请求应答数据;
[0355] 优选的,在本实施例中,预设编码算法为Base64编码算法,生成的连接请求应答数 据为:
[0356] HTTP/1.1 lOlSwitching Protocols
[0357] Upgrade:websocket
[0358] Connection:Upgrade
[0359] Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZ肺K+x0o=
[0360] 其中,Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZ 肺 K+x0o =表示第二参数为 s3pPLMBiTxaQ9kYGzzhZ 肺 Κ+χ0ο=。
[0361] 步骤408:模拟服务器将生成的连接请求应答数据返回给浏览器;
[0362] 步骤409:浏览器等待接收模拟服务器返回连接请求应答数据,当接收到模拟服务 器返回的连接请求应答时,解析得到第二参数;
[0363] 步骤410:浏览器将第一参数与全局唯一变量进行拼接得到第二拼接字符串。
[0364] 步骤411:浏览器根据预设哈希算法对得到第二拼接字符串进行哈希运算,得到第 二哈希值;
[0365] 优选的,在本实施例中,预设哈希算法为SHA-1。
[0366] 步骤412:浏览器根据预设编码算法对得到的第二哈希值进行编码,得到第Ξ参 数;
[0367] 优选的,在本实施例中,预设编码算法为Base64编码算法。
[0368] 步骤413:浏览器判断第Ξ参数与第二参数是否相同,是则连接成功,结束,否则连 接失败,结束。
[0369] 具体地,在本实施例中,当第Ξ参数与接收到的连接请求应答数据中的第二参数 相同时,连接成功,即WebSocket连接建立成功,当第Ξ参数与接收到的连接请求应答数据 中的第二参数不同时,连接失败,即WebSocket连接建立失败。
[0370] 进一步地,在本实施例中,断开WebSocket连接,具体地有如下两种方式:
[0371] 第一种方式为浏览器主动断开WebSocket连接,包括:
[0372] 步骤A1:浏览器向模拟服务器发送预设断开连接状态码;
[0373] 优选的,在本实施例中,预设断开连接状态码为0x08。
[0374] 步骤A2:模拟服务器接收到来自浏览器的断开连接状态码后,返回断开连接响应 给浏览器,并断开连接;
[0375] 优选的,在本实施例中,模拟服务器返回0给浏览器,并断开连接。
[0376] 步骤A3:浏览器等待并接收模拟服务器返回的断开连接响应,当接收到模拟服务 器返回的断开连接响应时,断开连接成功。
[0377] 第二种方式为模拟服务器主动断开WebSocket连接,包括:
[0378] 步骤B1:模拟服务器向浏览器发送预设断开连接状态码;
[0379] 优选的,在本实施例中,预设断开连接状态码为0x08。
[0380] 步骤B2:浏览器接收到来自模拟服务器的断开连接状态码后,返回断开连接响应 给模拟服务器,并断开连接;
[0381] 优选的,在本实施例中,浏览器返回0给模拟服务器,并断开连接。
[0382] 步骤B3:模拟服务器等待并接收浏览器返回的断开连接响应,当接收到浏览器返 回的断开连接响应时,断开连接成功。
[0383] 实施例五
[0384] 本发明实施例五提供一种浏览器访问智能密钥设备的装置,如图6所示,包括:
[0385] 第一接收模块501,用于接收浏览器发送来的第一数据;
[0386] 第一判断模块502,用于判断第一接收模块501接收到的第一数据是否符合第一 WebSocket预设格式;
[0387] 第一解析模块503,用于当第一判断模块502判断出第一接收模块501接收到的第 一数据符合第一 WebSocket预设格式时,解析第一数据得到通讯参数;
[0388] 报错模块504,用于当第一判断模块502判断出第一接收模块501接收到的第一数 据不符合第一 WebSocket预设格式时,报错,结束;
[0389] 查找调用模块505,用于根据第一解析模块503得到的通讯参数查找并调用智能密 钥设备的驱动接口;
[0390] 第一发送模块506,用于在查找调用模块505调用智能密钥设备的驱动接口之后, 发送相应指令给智能密钥设备;
[0391] 第二接收模块507,用于接收智能密钥设备返回的操作结果;
[0392] 组织模块508,用于将第二接收模块507接收到的操作结果组织得到符合第一 WebSocket预设格式的第二数据;
[0393] 第二发送模块509,用于将组织模块508得到的第二数据返回给浏览器。
[0394] 本实施例中的装置,还包括:
[03M]第一创建模块,用于在第一接收模块501接收浏览器发送来的第一数据之前,同浏 览器建立WebSocket连接。
[0396] 在本实施例中,第一创建模块,具体包括:
[0397] 接收单元,用于接收浏览器发送来的连接请求;
[0398] 判断单元,用于判断接收单元接收到的连接请求是否符合第二WebSocket预设格 式;
[0399] 在本实施例中,判断单元,具体用于:判断连接请求是否为将化tp协议头升级为 WebSocket协议头形式的连接请求,是则确认连接请求符合第二WebSocket预设格式,否则 确认连接请求不符合第二WebSocket预设格式。
[0400] 第一生成单元,用于当判断单元判断出接收单元接收到的连接请求符合第二 WebSocket预设格式时,根据连接请求中的第一参数生成第二参数;
[0401 ]在本实施例中,第一生成单元,具体用于:将第一参数与预设全局唯一变量进行拼 接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根据 预设编码算法对哈希值进行编码得到第二参数。
[0402] 第二生成单元,用于根据第一生成单元生成的第二参数生成符合第二WebSocket 预设格式的连接请求应答数据;
[0403] 报错单元,用于当判断单元判断出接收单元接收到的连接请求不符合第二 WebSocket预设格式时,报错,结束;
[0404] 在本实施例中,第二生成单元,具体用于:根据第二参数生成将化化协议头升级为 WebSocket协议头形式的连接请求应答数据。
[0405] 发送单元,用于将第二生成单元生成的第二WebSocket预设格式的连接请求应答 数据发送给浏览器,WebSocket连接建立成功。
[0406] 进一步地,在本实施例中,第一接收模块501,具体用于:接收浏览器通过 WebSocket连接发送来的第一数据;
[0407] 第二发送模块509,具体用于:将第二接收模块507接收到的操作结果通过 WebSocket连接返回给浏览器。
[040引在本实施例中,第一判断模块502,具体用于:在第一接收模块501接收浏览器发送 来的第一数据之后,判断第一数据是否符合WebSocket数据帖格式,是则确认第一数据符合 第一 WebSocket预设格式,否则确认第一数据不符合第一 WebSocket预设格式;
[0409] 组织模块508,具体用于:将第二接收模块507接收到的操作结果组织得到 WebSocket数据帖格式的第二数据。
[0410] 在本实施例中,第一解析模块503,具体用于:解析第一数据得到数据域,根据预设 加密算法对得到的数据域进行解密得到编码数据,根据预设编码算法对编码数据进行解码 得到通讯参数;
[0411] 组织模块508,具体用于:根据预设编码算法对操作结果进行编码得到编码操作结 果,根据预设加密算法对得到的编码操作结果进行加密得到符合第一 WebSocket预设格式 的第二数据。
[0412] 查找调用模块505,具体用于:根据通讯参数中指定的操作名称和/或模块标识和/ 或接口标识查找与浏览器预先约定的智能密钥设备的驱动函数接口。
[0413] 在本实施例中,查找调用模块505,还可W用于:根据通讯参数中指定的操作名称, 查找到相应的预先设定的智能密钥设备的驱动函数接口。
[0414] 更进一步地,在本实施例中,查找调用模块505,还可W用于:根据通讯参数查找并 调用智能密钥设备的驱动接口,并将通讯参数中指定的操作名称传入驱动接口;
[0415] 第一发送模块506,具体用于:根据查找调用模块505传入的操作名称组织相应的 操作指令,将操作指令发送给智能密钥设备;
[0416] 或者,
[0417] 查找调用模块505,具体用于:根据通讯参数查找并调用智能密钥设备的驱动接 P;
[0418] 第一发送模块506,具体用于:发送预先设定的指令给智能密钥设备。
[0419 ] 本实施例中的装置,还包括:
[0420] 第Ξ接收模块,用于在第一接收模块501接收浏览器发送来的第一数据之前,接收 浏览器发送来的第Ξ数据;
[0421] 第二判断模块,用于判断第Ξ接收模块接收到的第Ξ数据是否符合第一 WebSocket预设格式;
[0422] 第二解析模块,用于当第二判断模块判断出第Ξ接收模块接收到的第Ξ数据符合 第一 WebSocket预设格式时,解析第Ξ数据得到通讯标识;
[0423] 在本实施例中,报错模块504,还用于当第二判断模块判断出第Ξ接收模块接收到 的第Ξ数据不符合第一 WebSocket预设格式时,报错,结束。
[0424] 本实施例中的装置,还包括:
[0425] 第二创建模块,用于在第二解析模块解析第Ξ数据得到通讯标识之后,创建与通 讯标识对应的环境;
[0426] 调用模块,用于在第二创建模块创建与通讯标识对应的环境之后,回调预设函数 接口通知浏览器与通讯标识对应的环境创建完成;
[0427] 第一接收模块501,具体用于:接收浏览器发送来的第一数据和通讯标识。
[04%] 本实施例中的装置,还包括:
[0429] 第Ξ判断模块,用于在第一接收模块接收浏览器发送来的第一数据和通讯标识之 后,根据接收到的通讯标识查找与其对应的环境,判断是否查找成功;
[0430] 第一判断模块502,具体用于当第Ξ判断模块判断出查找成功时,判断第一数据是 否符合第一 WebSocket预设格式;
[0431] 报错模块504,还用于当第Ξ判断模块判断出查找不成功时,报错,结束;
[0432] 查找调用模块505,具体用于根据第一解析模块503得到的通讯参数在与通讯标识 对应的环境中查找并调用智能密钥设备的驱动接口。
[0433] 在本实施例中,第二创建模块,具体用于:分配存储区,将通讯标识与环境建立一 一对应关系。
[0434] 在本实施例中,第二接收模块507,还可W用于:接收智能密钥设备返回的应答数 据;
[0435] 相应地,组织模块508,还可W用于:解析第二接收模块507接收到的应答数据得到 操作结果,将得到的操作结果组织得到符合第一 WebSocket预设格式的第二数据。
[0436] 本实施例中的装置,还包括:断开模块;
[0437] 第一接收模块501,还用于在第二发送模块507将第二接收模块507接收到的操作 结果返回给浏览器之后,当浏览器操作页面未退出且继续访问所述智能密钥设备时,继续 接收所述浏览器发送来的第一数据;
[0438] 断开模块,用于在第二发送模块50則尋第二接收模块507接收到的操作结果返回给 浏览器之后,当浏览器操作页面退出时,断开WebSocket连接。
[0439] 在本实例中,断开模块,具体用于:
[0440] 接收到来自浏览器的预设断开连接状态码之后,返回断开连接响应给浏览器,并 断开连接,当浏览器接收到断开连接响应时,WebSocket连接断开成功;
[0441] 或者,
[0442] 向浏览器发送预设断开连接状态码,并断开连接,当模拟服务器接收到浏览器返 回的断开连接响应时,WebSocket连接断开成功。
[0443] 本发明的技术方案,擬弃了控件作为媒介使用智能密钥设备的传统方法,能够有 效的兼容如IE10、firefox 11、ch;rome41、safa;ri 6及其W上版本的浏览器,进行基于浏览 器来访问智能密钥设备进行身份认证、修改信息等一系列操作。
[0444] W上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明掲露的技术范围内,可轻易想到变化或替换,都 应涵盖在本发明的保护范围之内。因此,本发明的保护范围应W权利要求的保护范围为准。
【主权项】
1. 一种浏览器访问智能密钥设备的方法,其特征在于,包括: 步骤S1:模拟服务器接收浏览器发送来的第一数据,判断所述第一数据是否符合第一 WebSocket预设格式,是则解析所述第一数据得到通讯参数,执行步骤S2,否则报错,结束; 步骤S2:所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所 述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的操作结果; 步骤S3:所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述第一 WebSocket预设格式的第二数据,将所述第二数据返回给所述浏览器。2. 根据权利要求1所述的方法,其特征在于,所述步骤S1之前,还包括: 步骤a:模拟服务器同浏览器建立WebSocket连接。3. 根据权利要求2所述的方法,其特征在于,所述步骤a,具体为: 步骤al:所述模拟服务器接收所述浏览器发送来的连接请求,判断所述连接请求是否 符合第二WebSocket预设格式,是则根据所述连接请求中的第一参数生成第二参数,根据所 述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据,否则报错,结束; 步骤a2:所述模拟服务器将所述第二WebSocket预设格式的连接请求应答数据发送给 所述浏览器,所述WebSocket连接建立成功。4. 根据权利要求3所述的方法,其特征在于, 所述根据所述连接请求中的第一参数生成第二参数,具体为:将所述第一参数与预设 全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运 算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。5. 根据权利要求3所述的方法,其特征在于, 所述判断所述连接请求是否符合第二WebSocket预设格式,具体为:所述模拟服务器判 断所述连接请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认 所述连接请求符合第二WebSocket预设格式,否则确认所述连接请求不符合第二WebSocket 预设格式; 所述根据所述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据, 具体为:所述模拟服务器根据所述第二参数生成将Http协议头升级为WebSocket协议头形 式的连接请求应答数据。6. 根据权利要求2所述的方法,其特征在于, 所述步骤S1中,模拟服务器接收浏览器发送来的第一数据,具体为:所述模拟服务器接 收所述浏览器通过所述WebSocket连接发送来的第一数据; 所述步骤S4中,将所述第二数据返回给所述浏览器,具体为:所述模拟服务器将所述第 二数据通过所述WebSocket连接返回给所述浏览器。7. 根据权利要求1所述的方法,其特征在于, 所述判断所述第一数据是否符合第一 WebSocket预设格式,具体为:所述模拟服务器判 断所述第一数据是否符合WebSocket数据帧格式,是则确认所述第一数据符合第一 WebSocket预设格式,否则确认所述第一数据不符合第一 WebSocket预设格式; 所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数 据,具体为:所述模拟服务器将所述操作结果组织得到所述WebSocket数据帧格式的第二数 据。8. 根据权利要求1所述的方法,其特征在于, 所述步骤S1中,所述解析所述第一数据得到通讯参数,具体为:所述模拟服务器解析所 述第一数据得到数据域,根据预设加密算法对所述数据域进行解密得到编码数据,根据预 设编码算法对所述编码数据进行解码得到所述通讯参数; 所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数 据,具体为:所述模拟服务器根据所述预设编码算法对所述操作结果进行编码得到编码操 作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一 WebSocket预设格式的第二数据。9. 根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述模拟服务器根据所述 通讯参数查找智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数中指 定的操作名称和/或模块标识和/或接口标识查找与所述浏览器预先约定的智能密钥设备 的驱动函数接口。10. 根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述模拟服务器根据所述 通讯参数查找智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数中指 定的操作名称,查找相应的预先设定的智能密钥设备的驱动函数接口。11. 根据权利要求9或权利要求10所述的方法,其特征在于,所述步骤S2中,所述模拟服 务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令 给所述智能密钥设备,具体为: 所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,并将所述通 讯参数中指定的操作名称传入所述驱动接口,所述驱动接口根据所述操作名称组织相应的 操作指令,将所述操作指令发送给所述智能密钥设备; 或者, 所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接 口发送预先设定的指令给所述智能密钥设备。12. 根据权利要求1所述的方法,其特征在于,所述步骤S1之前,还包括: 步骤N:模拟服务器接收浏览器发送来的第三数据,判断所述第三数据是否符合第一 WebSocket预设格式,是则解析所述第三数据得到通讯标识,否则报错,结束。13. 根据权利要求12所述的方法,其特征在于, 所述步骤N中,所述解析所述第三数据得到通讯标识之后,还包括:所述模拟服务器创 建与所述通讯标识对应的环境,并通过回调预设函数接口通知所述浏览器与所述通讯标识 对应的环境创建完成; 所述步骤S1,具体为:模拟服务器接收浏览器发送来的第一数据和所述通讯标识,判断 所述第一数据是否符合第一 WebSocket预设格式,是则解析所述第一数据得到通讯参数,执 行步骤S2,否则报错,结束。14. 根据权利要求13所述的方法,其特征在于, 所述步骤S1中,所述模拟服务器接收浏览器发送来的第一数据和所述通讯标识之后, 还包括:所述模拟服务器根据接收到的通讯标识查找与其对应的环境,判断是否查找成功, 是则判断所述第一数据是否符合第一 WebSocket预设格式,否则报错,结束; 所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接 口,具体为:所述模拟服务器根据所述通讯参数在与所述通讯标识对应的环境中查找并调 用智能密钥设备的驱动接口。15. 根据权利要求13所述的方法,其特征在于,所述模拟服务器创建与所述通讯标识对 应的环境,具体为:所述模拟服务器分配存储区,将所述通讯标识与所述环境建立一一对应 关系。16. 根据权利要求1所述的方法,其特征在于, 所述步骤S2中,所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥 设备返回的操作结果,具体为:所述驱动接口发送相应指令给所述智能密钥设备并接收所 述智能密钥设备返回的应答数据; 所述步骤S3中,所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述 第一 WebSocket预设格式的第二数据,具体为:所述模拟服务器解析所述驱动接口接收到的 应答数据得到操作结果,将所述操作结果组织得到符合所述第一 WebSocket预设格式的第 二数据。17. 根据权利要求2所述的方法,其特征在于,所述步骤S3之后,还包括: 当所述浏览器操作页面未退出且继续访问所述智能密钥设备时,返回步骤S1; 当所述浏览器操作页面退出时,断开所述WebSocket连接。18. 根据权利要求17所述的方法,其特征在于,所述断开所述WebSocket通连接,具体 为: 所述模拟服务器接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响 应给所述浏览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接 断开成功; 或者, 所述模拟服务器向所述浏览器发送所述预设断开连接状态码,并断开连接,当所述模 拟服务器接收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。19. 一种浏览器访问智能密钥设备的装置,其特征在于,包括: 第一接收模块,用于接收浏览器发送来的第一数据; 第一判断模块,用于判断所述第一接收模块接收到的第一数据是否符合第一 WebSocket预设格式; 第一解析模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据 符合第一 WebSocket预设格式时,解析所述第一数据得到通讯参数; 报错模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据不符 合第一 WebSocket预设格式时,报错,结束; 查找调用模块,用于根据所述第一解析模块得到通讯参数查找并调用智能密钥设备的 驱动接口; 第一发送模块,用于在所述查找调用模块调用智能密钥设备的驱动接口之后,发送相 应指令给所述智能密钥设备; 第二接收模块,用于接收所述智能密钥设备返回的操作结果; 组织模块,用于将所述第二接收模块接收到的操作结果组织得到符合所述第一 WebSocket预设格式的第二数据; 第二发送模块,用于将所述组织模块得到的第二数据返回给所述浏览器。20. 根据权利要求19所述的装置,其特征在于,还包括: 第一创建模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,同浏览 器建立WebSocket连接。21. 根据权利要求20所述的装置,其特征在于,所述第一创建模块,具体包括: 接收单元,用于接收所述浏览器发送来的连接请求; 判断单元,用于判断所述接收单元接收到的连接请求是否符合第二WebSocket预设格 式; 第一生成单元,用于当所述判断单元判断出所述接收单元接收到的连接请求符合第二 WebSocket预设格式时,根据所述连接请求中的第一参数生成第二参数; 第二生成单元,用于根据所述第一生成单元生成的第二参数生成符合所述第二 WebSocket预设格式的连接请求应答数据; 报错单元,用于当所述判断单元判断出所述接收单元接收到的连接请求不符合第二 WebSocket预设格式时,报错,结束; 发送单元,用于将所述第二生成单元生成的所述第二WebSocket预设格式的连接请求 应答数据发送给所述浏览器,所述WebSocket连接建立成功。22. 根据权利要求21所述的装置,其特征在于,所述第一生成单元,具体用于:将所述第 一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符 串进行哈希运算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。23. 根据权利要求21所述的装置,其特征在于,所述判断单元,具体用于:判断所述连接 请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认所述连接请 求符合第二WebSocket预设格式,否则确认所述连接请求不符合第二WebSocket预设格式; 所述第二生成单元,具体用于:根据所述第二参数生成将Http协议头升级为WebSocket 协议头形式的连接请求应答数据。24. 根据权利要求20所述的装置,其特征在于, 所述第一接收模块,具体用于:接收所述浏览器通过所述WebSocket连接发送来的第一 数据; 所述第二发送模块,具体用于将所述第二接收模块接收到的所述操作结果通过所述 WebSocket连接返回给所述浏览器。25. 根据权利要求19所述的装置,其特征在于, 所述第一判断模块,具体用于:在所述第一接收模块接收浏览器发送来的第一数据之 后,判断所述第一数据是否符合WebSocket数据帧格式,是则确认所述第一数据符合第一 WebSocket预设格式,否则确认所述第一数据不符合第一 WebSocket预设格式; 所述组织模块,具体用于:将所述第二接收模块接收到的操作结果组织得到所述 WebSocket数据帧格式的第二数据。26. 根据权利要求19所述的装置,其特征在于, 所述第一解析模块,具体用于:解析所述第一数据得到数据域,根据预设加密算法对所 述数据域进行解密得到编码数据,根据预设编码算法对所述编码数据进行解码得到所述通 讯参数; 所述组织模块,具体用于:根据所述预设编码算法对所述操作结果进行编码得到编码 操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一 WebSocket预设格式的第二数据。27. 根据权利要求19所述的装置,其特征在于,所述查找调用模块,具体用于:根据所述 通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与所述浏览器预先约定的 智能密钥设备的驱动函数接口。28. 根据权利要求19所述的装置,其特征在于,所述查找调用模块,具体用于:根据所述 通讯参数中指定的操作名称,查找相应的预先设定的智能密钥设备的驱动函数接口。29. 根据权利要求27或权利要求28所述的装置,其特征在于, 所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱动接 口,并将所述通讯参数中指定的操作名称传入所述驱动接口; 所述第一发送模块,具体用于:根据所述操作名称组织相应的操作指令,将所述操作指 令发送给所述智能密钥设备; 或者, 所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱动接 P; 所述第一发送模块,具体用于:发送预先设定的指令给所述智能密钥设备。30. 根据权利要求19所述的装置,其特征在于,还包括: 第三接收模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,接收浏 览器发送来的第三数据; 第二判断模块,用于判断所述第三接收模块接收到的第三数据是否符合第一 WebSocket预设格式; 第二解析模块,用于当所述第二判断模块判断出所述第三接收模块接收到的第三数据 符合第一 WebSocket预设格式时,解析所述第三数据得到通讯标识; 所述报错模块,还用于当所述第二判断模块判断出所述第三接收模块接收到的第三数 据不符合第一 WebSocket预设格式时,报错,结束。31. 根据权利要求30所述的装置,其特征在于,还包括: 第二创建模块,用于在所述第二解析模块解析所述第三数据得到通讯标识之后,创建 与所述通讯标识对应的环境; 调用模块,用于在所述第二创建模块创建与所述通讯标识对应的环境之后,回调预设 函数接口通知所述浏览器与所述通讯标识对应的环境创建完成; 所述第一接收模块,具体用于:接收浏览器发送来的第一数据和所述通讯标识。32. 根据权利要求31所述的装置,其特征在于,还包括: 第三判断模块,用于在所述第一接收模块接收浏览器发送来的第一数据和所述通讯标 识之后,根据接收到的通讯标识查找与其对应的环境,判断是否查找成功; 所述第一判断模块,具体用于当所述第三判断模块判断出查找成功时,判断所述第一 数据是否符合第一 WebSocket预设格式; 所述报错模块,还用于当所述第三判断模块判断出查找不成功时,报错,结束; 所述查找调用模块,具体用于根据所述第一解析模块得到的通讯参数在与所述通讯标 识对应的环境中查找并调用智能密钥设备的驱动接口。33. 根据权利要求31所述的装置,其特征在于,所述第二创建模块,具体用于:分配存储 区,将所述通讯标识与所述环境建立一一对应关系。34. 根据权利要求19所述的装置,其特征在于, 所述第二接收模块,具体用于:接收所述智能密钥设备返回的应答数据; 所述组织模块,具体用于:解析所述第二接收模块接收到的应答数据得到操作结果,将 所述操作结果组织得到符合所述第一 WebSocket预设格式的第二数据。35. 根据权利要求20所述的装置,其特征在于,还包括:断开模块; 所述第一接收模块,还用于在所述第二发送模块将所述第二接收模块接收到的操作结 果返回给所述浏览器之后,当所述浏览器操作页面未退出且继续访问所述智能密钥设备 时,继续接收所述浏览器发送来的第一数据; 所述断开模块,用于在所述发送模块将所述第二接收模块接收到的操作结果返回给所 述浏览器之后,当所述浏览器操作页面退出时,断开所述WebSocket连接。36. 根据权利要求35所述的装置,其特征在于,所述断开模块,具体用于: 接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响应给所述浏览 器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接断开成功; 或者, 向所述浏览器发送所述预设断开连接状态码,并断开连接,当所述模拟服务器接收到 所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
【文档编号】H04L29/06GK106060128SQ201610353656
【公开日】2016年10月26日
【申请日】2016年5月25日
【发明人】陆舟, 于华章
【申请人】飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1