CN104539430B - 一种基于卡片的动态口令生成方法及设备 - Google Patents
一种基于卡片的动态口令生成方法及设备 Download PDFInfo
- Publication number
- CN104539430B CN104539430B CN201410840454.XA CN201410840454A CN104539430B CN 104539430 B CN104539430 B CN 104539430B CN 201410840454 A CN201410840454 A CN 201410840454A CN 104539430 B CN104539430 B CN 104539430B
- Authority
- CN
- China
- Prior art keywords
- state
- data
- operating conditions
- input
- current operating
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- 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
-
- 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/44—Program or device authentication
-
- 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/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/0013—Methods or arrangements for sensing record carriers, e.g. for reading patterns by galvanic contacts, e.g. card connectors for ISO-7816 compliant smart cards or memory cards, e.g. SD card readers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0838—Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0846—Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0853—Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3234—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
Abstract
本发明公开了一种基于卡片的动态口令生成方法及设备,属于身份认证领域。所述方法包括:设备上电,初始化当前运行状态为第一状态,提示用户按下模式类按键,当模式类按键被按下时设备判断要执行的操作,若是数字类按键被按下则根据用户对数字类按键的按下操作获得输入数据;若是状态类按键被按下则根据用户对状态类按键的按下操作获得确认状态;否则根据当前运行状态执行相应操作,包括根据与卡片的交互获取口令数据以及对所述口令数据进行预设处理输出动态口令。本发明提供的方法可以将用户持有的卡片内部数据以及用户输入的信息参与生成动态口令,避免了口令数据被篡改的可能性,从而提高了动态口令生成的安全性。
Description
技术领域
本发明涉及身份认证领域,特别涉及一种基于卡片的动态口令生成方法及设备。
背景技术
随着网络的发展,人们越来越多的活动依赖于网络进行,如网上银行、电话银行等,网络信息安全与人们的利益密切相关,身份认证技术也随之发展,比静态口令更为安全的身份认证方法——动态口令认证方法也越来越受到人们的青睐。
目前,动态口令一般由服务器生成并以短信或者邮件的形式下发给用户或者由用户持有的动态令牌(OTP)生成。倘若短信或邮件被非法截获或者动态令牌被非法用户利用,又或者用户进行交易操作时数据被篡改、用户登录了钓鱼网站,输入的动态口令被截获,都会对用户的利益造成损害,严重影响到用户的权益。
发明内容
鉴于现有技术的不足,本发明提出了一种基于卡片的动态口令生成方法及设备,利用用户持有的卡片和动态口令生成设备来生成动态口令,以提高动态口令的安全性。
本发明提供的技术方案如下:一种基于卡片的动态口令生成方法,当卡片插入到设备上时,执行以下步骤:
步骤S1:所述设备上电,初始化当前运行状态为第一状态;
步骤S2:所述设备判断要执行的操作,若是数字类按键操作则执行步骤S3;若是状态类按键操作则执行步骤S4,否则执行步骤S5;
步骤S3:所述设备判断是否需要输入数字,是则根据用户对数字类按键的按下操作获得输入数据,然后返回执行步骤S2;否则直接返回步骤S2;
步骤S4:所述设备判断是否需要输入确认状态,是则根据用户对状态类按键的按下操作获得确认状态,然后返回执行步骤S2;否则直接返回步骤S2;
步骤S5:所述设备判断当前运行状态;
若是第一状态则对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第六状态,然后返回执行步骤S2;
若是第六状态则提示用户输入PIN码,并在确认状态为确认时将输入数据存储为PIN码,更新当前运行状态为第七状态,然后返回步骤S2;
若是第七状态则获取存储的PIN码,生成验PIN指令发送给卡片,并在卡片验PIN成功后更新当前运行状态为第八状态,然后返回步骤S2;
若是第八状态则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态,然后返回步骤S2;
若是第九状态则根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态,然后返回步骤S2。
上述步骤S5所述判断当前运行状态之后还可以包括,
若是第二状态则提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回执行步骤S2;相应的,判断当前运行状态为第一状态时所述更新当前运行状态为第六状态替换为,更新当前运行状态为第二状态。
上述判断当前运行状态为第一状态时还包括根据所述卡片返回的第一返回数据设置货币标志;步骤S5所述判断当前运行状态之后还包括,
若是第三状态则判断货币标志是否置位,是则提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态,然后返回步骤S2;否则更新当前运行状态为第四状态,然后返回步骤S2;
若是第四状态则提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回步骤S2;
相应的,判断当前运行状态为第二状态时,所述更新当前运行状态为第六状态替换为更新当前运行状态为第三状态。
上述步骤S5所述判断当前运行状态之后还包括,
若是第五状态则提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回步骤S2;相应的,判断当前运行状态为第一状态时,所述更新当前运行状态为第六状态替换为更新当前运行状态为第五状态。
上述步骤S1还可以包括:提示用户选择模式类按键,当模式类按键被按下时,获取与用户所选模式对应的运行状态集合,然后执行步骤S2;步骤S5所述判断当前运行状态具体为,判断获取的所述运行状态集合下的当前运行状态。
所述获取的与用户所选模式对应的运行状态集合可以是包括第一状态、第六状态、第七状态、第八状态和第九状态,或包括第一状态、第二状态、第六状态、第七状态、第八状态和第九状态,或包括第一状态、第二状态、第三状态、第四状态、第六状态、第七状态、第八状态和第九状态,或包括第一状态、第五状态、第六状态、第七状态、第八状态和第九状态。
上述步骤S3所述判断是否需要输入数字具体为,判断数字输入标志是否为1,是则表示需要输入数字,否则表示不需要输入数字;步骤S3所述根据用户对数字类按键的按下操作获得输入数据具体为:
步骤3-1:判断位数计数标志是否小于预设值,是则将位数计数标志的值加1,根据数字输入缓存中的数值更新输入数据,然后执行步骤3-2,否则提示达到输入上限,初始化位数计数标志为0,清空数字输入缓存,然后执行步骤3-2;
步骤3-2:设置键值标志为0。
上述步骤S4所述判断是否需要输入确认状态具体为,判断位数计数标志是否大于0,是则表示需要输入确认状态,否则表示不需要输入确认状态;步骤S4所述根据用户对状态类按键的按下操作获得确认状态具体为:
步骤4-1:判断键值标志的值,若为第五预设值则置确认标志=1,清空数字输入缓存,初始化位数计数标志为0,执行步骤4-4;若为第六预设值则执行步骤4-2;
步骤4-2:判断位数计数标志是否为0,是则置确认标志=2,执行步骤4-4;否则执行步骤4-3;
步骤4-3:清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1,控制显示屏显示退格,执行步骤4-4;
步骤4-4:设置键值标志为0;
所述确认标志=1表示获得的确认状态为确认,所述确认标志=2表示获得的确认状态为取消,所述确认标志=0表示等待获取确认状态。
本发明还提供了一种基于卡片的动态口令生成设备,包括按键和显示屏,还包括以下功能模块:
初始化模块,用于在设备上电后,初始化当前运行状态为第一状态;
第一判断模块,用于判断要执行的操作,用于判断是否需要输入数字,用于判断是否需要输入确认状态;
第一处理模块,用于在所述第一判断模块判断出要执行的操作是数字类按键操作且需要输入数字时,根据用户对数字类按键的按下操作获得输入数据;用于在所述第一判断模块判断出要执行的操作是状态类按键操作且需要输入确认状态时根据用户对状态类按键的按下操作获得确认状态;
第二判断模块,用于在所述第一判断模块判断出要执行的操作不是所述数字输入类按键操作或所述状态类按键操作时,判断当前运行状态;
第二处理模块,用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第六状态;
第三处理模块,用于在所述第二判断模块判断出当前运行状态是第六状态时,提示用户输入PIN码,并在所述第一处理模块获取的当前的确认状态为确认时将所述第一处理模块获取的当前的输入数据存储为PIN码,更新当前运行状态为第七状态;
第四处理模块,用于在所述第二判断模块判断出当前运行状态是第七状态时,获取存储的PIN码,生成验PIN指令发送给卡片,并在得知卡片验PIN成功后更新当前运行状态为第八状态;
第五处理模块,用于在所述第二判断模块判断出当前运行状态是第八状态时,根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态;
第六处理模块,用于在所述第二判断模块判断出当前运行状态是第九状态时,根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态。
所述设备还包括第七处理模块,用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第二状态。
所述设备还包括第八处理模块和第九处理模块,所述第八处理模块用于在所述第二判断模块判断出当前运行状态是第三状态时,判断货币标志是否置位,是则提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态;否则更新当前运行状态为第四状态;
所述第九处理模块,用于在所述第二判断模块判断出当前运行状态是第四状态时,提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,以及根据所述卡片返回的第一返回数据设置货币标志,更新当前运行状态为第二状态;
所述第七处理模块,具体用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第三状态。
所述设备还包括第十处理模块,用于在所述第二判断模块判断出当前运行状态是第五状态时,提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第五状态。
所述初始化模块,还用于初始化模式标志的取值与运行状态集合的对应关系,控制显示屏提示用户按下模式类按键;当模式类按键被按下时,根据模式标志获取与其对应的运行状态集合;所述初始化模块,还具体用于初始化各个运行状态集合的当前运行状态为第一状态;所述第二判断模块,还具体用于判断所述初始化模块获取的所述运行状态集合下的当前运行状态。
所述初始化模块,具体用于初始化取值为第一预设值的模式标志对应的运行状态集合为包括第一状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第二预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第三预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第三状态、第四状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第四预设值的模式标志对应的运行状态集合为包括第一状态、第五状态、第六状态、第七状态、第八状态和第九状态。
进一步的,所述初始化模块,还用于初始化位数计数标志为初值;所述第一判断模块,还具体用于判断数字输入标志是否置位,是则表示需要输入数字,否则表示不需要输入数字;所述第一处理模块,还具体用于在第一判断模块判断出要执行的操作是数字类按键操作且需要输入数字时,判断位数计数标志是否小于预设值,是则将位数计数标志的值加1,根据数字输入缓存中的数值更新输入数据;否则控制显示屏提示达到输入上限,初始化位数计数标志为初值,清空数字输入缓存,设置键值标志为默认值。
进一步的,所述初始化模块,还用于初始化数字输入标志为第二数值,初始化位数计数标志为初值;所述第一判断模块,还具体用于判断位数计数标志是否大于初值,是则表示需要输入确认状态,否则表示不需要输入确认状态;所述第一处理模块,还具体用于用于在第一判断模块判断出要执行的操作是状态类按键操作且需要输入确认状态时,判断键值标志的值,若为第五预设值则设置确认标志为第一数值,清空数字输入缓存,初始化位数计数标志为初值并设置键值标志为默认值;若为第六预设值则判断位数计数标志是否为初值,是则设置确认标志为第三数值并设置键值标志为默认值,否则执行清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1,控制显示屏显示退格,以及设置键值标志为默认值。
本发明的有益效果在于:用户持有的卡片参与生成动态口令,保证了动态口令生成设备持有者的身份合法性;用户输入的信息参与生成动态口令,避免了数据在操作过程中被篡改的可能性;动态口令在用户处生成,避免了现有技术中出现的动态口令在由服务器传送给用户的过程中被截获的风险。
附图说明
图1是本发明实施例2提供的一种基于卡片的动态口令生成方法的流程图;
图2是本发明实施例2提供的一种按键中断处理流程图;
图3a-3c是图1中的动态口令生成模式流程的流程图;
图4是图1中的数字输入类处理流程的流程图;
图5是图1中的状态输入类处理流程的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图和具体实施例对本发明作进一步地详细描述。
实施例1
本实施例提供的一种基于卡片的动态口令生成方法,需要用户、卡片、动态口令生成设备三者的参与来完成,所述动态口令生成设备可以是与卡进行交互的各类终端设备,本实施例中以读卡器为例,该读卡器具有显示屏、数字类按键(如数字键0-9)、状态类按键(如取消键和OK键)和模式类按键(如OTP模式选择键),首先用户将卡片插入到读卡器上,所述动态口令生成方法包括以下步骤:
步骤S1:读卡器上电,初始化当前运行状态为第一状态;
具体的,当有卡片插入到读卡器时,读卡器自动上电。
步骤S2:读卡器判断要执行的操作,若是数字类按键操作则执行步骤S3;若是状态类按键操作则执行步骤S4,否则执行步骤S5;
优选的,读卡器可以结合按键中断流程和中断处理流程判断出被按下的按键类型,进而根据被按下的按键类型确定要执行的操作,例如,当数字类按键被按下则要执行的操作为数字类按键操作,执行步骤S3,当状态类按键被按下则要执行的操作为状态类按键操作,执行步骤S4,否则均执行步骤S5的操作。
所述按键中断流程具体为:当有按键被按下时进入按键中断,置位按键IO中断标志,退出按键中断。
所述中断处理流程具体为:当按键IO中断标志被置位时进入中断处理,根据用户的按键输入设置键值标志的值,以及根据键值标志的值向数字输入缓存中写入数值,清按键IO中断标志后退出中断处理。
进一步的,当所述键值标志的值属于第一预设范围时,表示数字类按键被按下,当所述键值标志的值属于第二预设范围时,表示状态类按键被按下,例如,第一预设范围为0x01-0x0A,分别对应数字键0-9,第二预设范围为0x0B-0x0C,分别对应OK键和取消键。
步骤S3:读卡器判断是否需要输入数字,是则根据用户对数字类按键的按下操作获得输入数据,然后返回执行步骤S2;否则直接返回步骤S2;
具体的,在本发明的流程中通过数字输入标志的值来判断是否需要输入数字,例如,若数字输入标志=1,则表示需要输入数字,若数字输入标志=0,则表示不需要输入数字。优选的步骤S1还包括初始化数字输入标志为0,初始化位数计数标志为0,该位数计数标志的值用于表示用户按键输入的数字的位数。
本步骤具体为读卡器要执行的一个操作子流程,包括以下步骤:
步骤1-1:判断数字输入标志的值,若等于1则执行步骤1-2,若等于0则执行步骤1-3;
步骤1-2:判断位数计数标志是否小于预设值,是则将位数计数标志的值加1,根据数字输入缓存中的数值更新输入数据,然后执行步骤1-4,否则提示达到输入上限,执行步骤1-3;
步骤1-3:初始化位数计数标志为0,清空数字输入缓存,然后执行步骤1-4;
例如,位数计数标志的初值=0。
步骤1-4:设置键值标志为0,返回步骤S2。
例如,键值标志的默认值=0。
步骤S4:读卡器判断是否需要输入确认状态,是则根据用户对状态类按键的按下操作获得确认状态,然后返回执行步骤S2;否则直接返回步骤S2;
具体的,在本发明的流程中通过判断位数计数标志是否大于0来判断是否需要输入确认状态,若大于0则表示需要输入确认状态,否则表示不需要输入确认状态。优选的步骤S1还包括初始化确认标志为0。
本步骤具体为读卡器要执行的一个操作子流程,读卡器可以通过确认标志的值得到确认状态,例如,确认标志=1表示的确认状态为确认,确认标志=2表示的确认状态为取消,确认标志=0表示等待获取确认状态。
本步骤的具体化流程可以包括以下步骤:
步骤2-1:判断位数计数标志是否大于0,是则执行步骤2-2,否则返回执行步骤2-5;
步骤2-2:判断键值标志的值,若为第五预设值则置确认标志=1,清空数字输入缓存,初始化位数计数标志为0,执行步骤2-5;若为第六预设值则执行步骤2-3;
例如,第五预设值为0x0B,第六预设值为0x0C。位数计数标志的初值=0。
步骤2-3:判断位数计数标志是否为0,是则置确认标志=2,执行步骤2-5;否则执行步骤2-4;
步骤2-4:清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1,控制显示屏显示退格;
具体的,用清除操作之后数字输入缓存中剩余的数据更新输入数据。
步骤2-5:设置键值标志为0,返回执行步骤S2。
例如,键值标志的默认值=0。
步骤S5:读卡器判断当前运行状态;
若是第一状态则对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第六状态,然后返回执行步骤S2;
若是第六状态则提示用户输入PIN码,并在确认状态为确认时将输入数据存储为PIN码,更新当前运行状态为第七状态,然后返回步骤S2;
若是第七状态则获取存储的PIN码,生成验PIN指令发送给卡片,并在卡片验PIN成功后更新当前运行状态为第八状态,然后返回步骤S2;
若是第八状态则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态,然后返回步骤S2;
若是第九状态则根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态,然后返回步骤S2。
本实施例提供的读卡器可以至少支持一种模式的动态口令生成方式,例如其中基于第一预设模式的动态口令生成方式为通过上述步骤S5所包含的五个状态的运行来实现的。
进一步的,基于仅支持第二预设模式的动态口令生成方式,上述步骤S5替换为:判断当前运行状态;
若是第一状态则对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第二状态,然后返回执行步骤S2;
若是第二状态则提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回执行步骤S2;
若是第六状态则提示用户输入PIN码,并在确认状态为确认时将输入数据存储为PIN码,更新当前运行状态为第七状态,然后返回步骤S2;
若是第七状态则获取存储的PIN码,生成验PIN指令发送给卡片,并在卡片验PIN成功后更新当前运行状态为第八状态,然后返回步骤S2;
若是第八状态则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态,然后返回步骤S2;
若是第九状态则根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态,然后返回步骤S2。
进一步的,基于仅支持第三预设模式的动态口令生成方式,上述步骤S5替换为:判断当前运行状态;
若是第一状态则对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,根据所述卡片返回的第一返回数据设置货币标志,更新当前运行状态为第二状态,然后返回执行步骤S2;
若是第二状态则提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第三状态,然后返回执行步骤S2;
若是第三状态则判断货币标志是否置位,是则提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态,然后返回步骤S2;否则更新当前运行状态为第四状态,然后返回步骤S2;
若是第四状态则提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回步骤S2;
若是第六状态则提示用户输入PIN码,并在确认状态为确认时将输入数据存储为PIN码,更新当前运行状态为第七状态,然后返回步骤S2;
若是第七状态则获取存储的PIN码,生成验PIN指令发送给卡片,并在卡片验PIN成功后更新当前运行状态为第八状态,然后返回步骤S2;
若是第八状态则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态,然后返回步骤S2;
本实施例中具体的,若预设缓存中无数据,则根据保存的第一数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取的口令数据可以是卡片内部计数器产生的动态口令。本步骤所述校验是指对口令数据的格式进行校验,例如判断获取的口令数据格式是否符合TLV格式。
若是第九状态则根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态,然后返回步骤S2。
进一步的,基于仅支持第四预设模式的动态口令生成方式,上述步骤S5替换为:判断当前运行状态;
若是第一状态则对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第五状态,然后返回执行步骤S2;
若是第五状态则提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回步骤S2;
若是第六状态则提示用户输入PIN码,并在确认状态为确认时将输入数据存储为PIN码,更新当前运行状态为第七状态,然后返回步骤S2;
若是第七状态则获取存储的PIN码,生成验PIN指令发送给卡片,并在卡片验PIN成功后更新当前运行状态为第八状态,然后返回步骤S2;
若是第八状态则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态,然后返回步骤S2;
若是第九状态则根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态,然后返回步骤S2。
进一步的,基于多种模式的动态口令生成方式,可以通过在读卡器上设置模式类按键供用户选择要使用的动态口令生成模式,本实施例提供的步骤S1-步骤S5需做以下调整,
所述步骤S1还包括提示用户按下模式类按键,当模式类按键被按下时执行步骤S2,进一步的,本步骤中若模式类按键被按下则执行步骤S2,若其他按键被按下或无按键按下则读卡器无响应。同上所述,读卡器可以结合按键中断流程和中断处理流程判断出被按下的按键类型,具体的,当键值标志的值属于第三预设范围时,表示模式类按键被按下,例如,第三预设范围为0xA1-0xA4,键值标志的取值0xA1、0xA2、0xA3、0xA4分别对应第一预设模式、第二预设模式、第三预设模式和第四预设模式。
步骤S1还包括初始化模式标志的取值与运行状态集合的对应关系,所述初始化当前运行状态为第一状态具体为初始化各个运行状态集合的当前运行状态为第一状态;
例如,初始化取值为0xA1的模式标志对应的运行状态集合为包括第一状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为0xA2的模式标志对应的运行状态集合为包括第一状态、第二状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为0xA3的模式标志对应的运行状态集合为包括第一状态、第二状态、第三状态、第四状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为0xA4的模式标志对应的运行状态集合为包括第一状态、第五状态、第六状态、第七状态、第八状态和第九状态。
所述当模式类按键被按下时还包括:根据模式标志获取与其对应的运行状态集合;步骤S5所述判断当前运行状态具体为,判断获取的所述运行状态集合下的当前运行状态。
实施例2
本实施例在实施例1的基础上,提供了一种基于卡片的动态口令生成方法的具体实现流程,该方法支持四种模式,如图1所示,包括以下内容:
步骤1:设备上电,初始化各个标志,初始化各取值的模式标志对应的运行状态编码组及其编号;
具体的,初始化本实施例中涉及的各个标志的值为0,初始化模式标志的取值为0xA1对应的运行状态编码组为{0x01,x0x06,x0x07,0x08,0x09}及其编号为0;初始化模式标志的取值为0xA2对应的运行状态编码组为{0x01,0x02,x0x06,x0x07,0x08,0x09}及其编号为0;初始化模式标志的取值为0xA3对应的运行状态编码组为{0x01,0x02,0x03,0x04,x0x06,x0x07,0x08,0x09}及其编号为0;初始化模式标志的取值为0xA4对应的运行状态编码组为{0x01,0x05,x0x06,x0x07,0x08,0x09}及其编号为0。具体的,所述编号与各个运行状态编码组中的状态编码对应,例如,对于运行状态编码组{0x01,0x02,x0x06,x0x07,0x08,0x09},编号=0时对应0x01,编号=1时对应0x02,编号=2时对应0x06,以此类推。
步骤2:控制显示屏提示用户选择模式;
本实施例中,供用户选择的模式包括mode1、mode2、mode3和mode4,每个模式对应有一个模式按键,其中,本实施例中模式标志的取值为0xA1对应mode1,模式标志的取值为0xA2对应mode2,模式标志的取值为0xA3对应mode3,模式标志的取值为0xA4对应mode4。
步骤3:判断键值标志的取值范围,若是第一预设范围则执行步骤5,若是第二预设范围则执行步骤6,若是其他则执行步骤4;
具体的,第一预设范围为0x01至0x0A,分别对应数字键0-9,第二预设范围为0x0B至0x0C,分别对应确认键和取消键。
进一步的,本实施例提供的流程中还包括如图2所示的按键中断处理流程,具体如下:
步骤1-1:判断按键IO中断标志是否置位,是则执行步骤1-2,否则退出;
步骤1-2:初始化滤波计数字为0;
步骤1-3:判断各按键IO电平是否有低电平,是则执行步骤1-4,否则执行步骤1-11;
步骤1-4:将滤波计数字加1;
步骤1-5:判断滤波计数字是否大于10,是则执行步骤1-6,否则返回执行步骤1-3;
步骤1-6:设置键值标志为相应数值;
例如,若检测到数字键0被按下,则设置键值标志=0x01,若检测到确认键被按下,则设置键值标志=0x0B。
步骤1-7:判断键值标志是否大于0xA0且小于0xA5,是则执行步骤1-8,否则执行步骤1-9;
步骤1-8:根据键值标志的值设置模式标志的值,然后执行步骤1-12;
具体的,若键值标志的值为0xA1则设置模式标志=0xA1,若键值标志的值为0xA2则设置模式标志=0xA2,若键值标志的值为0xA3则设置模式标志=0xA3,若键值标志的值为0xA4则设置模式标志=0xA4。
步骤1-9:判断键值标志是否大于0x00且小于0x0B,是则执行步骤1-10,否则执行步骤1-12;
步骤1-10:根据键值标志的值向数字输入缓存中写入数值,然后执行步骤1-12;
具体的,若键值标志的值为0x01则向数字输入缓存中写入1,若键值标志的值为0x02则向数字输入缓存中写入2,若键值标志的值为0x03则向数字输入缓存中写入3,若键值标志的值为0x04则向数字输入缓存中写入4,若键值标志的值为0x05则向数字输入缓存中写入5,若键值标志的值为0x06则向数字输入缓存中写入6,若键值标志的值为0x07则向数字输入缓存中写入7,若键值标志的值为0x08则向数字输入缓存中写入8,若键值标志的值为0x09则向数字输入缓存中写入9。
步骤1-11:设置键值标志为0,然后执行步骤1-12;
步骤1-12:清按键IO中断标志,退出。
具体的,所述清按键IO中断标志等同于复位按键IO中断标志。
步骤4:进入动态口令生成模式流程,流程结束后返回步骤3;
步骤5:进入数字输入类处理流程,流程结束后返回步骤3;
步骤6:进入状态输入类处理流程,流程结束后返回步骤3。
上述步骤4中所述的动态口令生成模式流程,如图3a-3c所示,包括以下步骤:
步骤101:判断模式标志,若为0xA1或0xA2或0xA3或0xA4则执行步骤102,若为其他则结束;
步骤102:判断与模式标志对应的状态编码组的当前编号对应的状态编码,若等于0x01则执行步骤a1,若等于0x02则执行步骤b1,若等于0x03则执行步骤c1,若等于0x04则执行步骤d1,若等于0x06则执行步骤e1,若等于0x07则执行步骤f1,若等于0x08则执行步骤g1,若等于0x05则执行步骤h1,若等于0x09则执行步骤i1;
步骤a1:对卡片上电;
步骤a2:判断上电是否成功,是则执行步骤a3,否则执行步骤a9;
步骤a3:向卡片发送预设指令;
优选的,所述向卡片发送预设指令可以具体为:向卡片发送第一预设命令,并根据从第一预设命令的响应数据中获取的数据组成第二预设命令,向卡片发送第二预设命令,并根据从第二预设命令的响应数据中获取的数据组成第三预设命令,最后向卡片发送第三预设命令。
例如,第一预设命令为应用选择命令,该命令的数据域中包含有发卡行预先设定的一个数值,从第一预设命令的响应数据中获取的数据为PDOL(部分文件控制信息)。所述第二预设命令为应用初始化命令,该命令的数据域中包含有PDOL,从第二预设命令的响应数据中获取的数据为AFL(应用文件标识信息),所述第三预设命令为读应用数据命令,该命令的数据域中包含有AFL,从第三预设命令的响应数据中可以获取第一数据和第二数据。
步骤a4:解析卡片返回的第一返回数据获取第一数据和第二数据并保存;
本步骤具体地,解析卡片返回的第一返回数据,根据卡片返回的第一返回数据中的第一标识符和第二预识符获取第一数据(CDOL,即卡内应用数据)并保存,根据第三标识符获取第二数据(IPB,即发卡行专有位图)并保存;
本实施例中优选地,第一标识符为0x8c,第二标识符为0x8d,第三标识符为0x9F56;本步骤具体为:解析卡片返回的第一返回数据,根据第一标识符后的一个字节数值得到第一数据长度,截取该一个字节数值之后的位长等于第一数据长度的数据作为第一数据的第一组成部分,根据第二标识符后的一个字节数值得到第二数据长度,截取该一个字节数值之后的位长等于第二数据长度的数据作为第一数据的第二组成部分,将第一组成部分和第二组成部分顺序拼接得到第一数据并保存;根据第三标识符后的一个字节数值得到第二数据长度,截取该一个字节数值之后的位长等于第二数据长度的数据作为第二数据并保存。
例如:卡片返回的第一返回数据为0x 8c 06 9F 33 03 9F 4E 148d 08 A0 00 0003 33 01 01 01 9F 56 03 9F 4E 14 90 00,根据第一标识符0x8c和第一数据长度0x06以及第二标识符0x8d和第二数据长度0x08,截取得到的第一数据为:0x 9F 33 03 9F 4E 14A0 00 00 03 33 01 01 01,根据第三标识符0x9F56截取得到的第二数据为:03 9F 4E 14。
步骤a5:判断卡片返回的第一返回数据中是否有货币标签,是则执行步骤a6,否则执行步骤a7;
例如,表示货币标签的标识为0x8e,本步骤具体为判断卡片返回的第一返回数据中是否包含有0x8e,是则执行步骤a6,否则执行步骤a7。
步骤a6:置货币标志=1,然后执行步骤a8;
步骤a7:置货币标志=0,然后执行步骤a8;
步骤a8:将当前编号加1,结束;
步骤a9:控制显示屏显示卡片操作错误;
步骤a10:将当前编号初始化为0,结束;
步骤b1:控制显示屏提示用户输入挑战码;
步骤b2:置数字输入标志=1;
步骤b3:判断确认标志,若等于1则执行步骤b4,若等于2则执行步骤b7,若等于0则返回;
步骤b4:置数字输入标志=0;
步骤b5:将输入数据作为挑战码存入预设缓存;
步骤b6:将当前编号加1,结束;
步骤b7:控制显示屏显示输入失败,对卡片下电;
步骤b8:将当前编号初始化为0,结束。
步骤c1:判断货币标志,若等于1则执行步骤c2,若等于0则执行步骤c7;
步骤c2:控制显示屏提示用户输入货币编号;
步骤c3:置数字输入标志=1;
步骤c4:判断确认标志,若等于1则执行步骤c5,若等于2则执行步骤c8,若等于0则结束;
步骤c5:置数字输入标志=0;
步骤c6:将输入数据作为货币类型存入预设缓存;
步骤c7:将当前编号加1,结束;
步骤c8:控制显示屏显示输入失败,对卡片下电;
步骤c9:将当前编号初始化为0,结束。
步骤d1:控制显示屏提示用户输入金额;
步骤d2:置数字输入标志=1;
步骤d3:判断确认标志,若等于1则执行步骤d4,若等于2则执行步骤d7,若等于0则结束;
步骤d4:置数字输入标志=0;
步骤d5:将输入数据作为金额存入预设缓存;
步骤d6:将当前编号加1,结束;
步骤d7:控制显示屏显示输入失败,对卡片下电;
步骤d8:将当前编号初始化为0,结束。
步骤e1:控制显示屏提示用户输入PIN码;
步骤e2:置数字输入标志=1;
步骤e3:判断确认标志,若等于1则执行步骤e4,若等于2则执行步骤e7,若等于0则结束;
步骤e4:置数字输入标志=0;
步骤e5:将输入数据记录为PIN码;
步骤e6:将当前编号加1,结束;
步骤e7:控制显示屏显示输入失败,对卡片下电;
步骤e8:将当前编号初始化为0,结束。
步骤f1:根据PIN码生成验PIN指令,并向卡片发送验PIN指令;
具体的,向卡片发送的验PIN指令的格式为:0x 00 20 00 80 nn PIN码,其中nn表示PIN码的长度。
步骤f2:判断验PIN是否成功,是则执行步骤f3,否则执行步骤f4;
具体的,根据卡片的返回值判断验PIN是否成功,例如,若卡片返回0x9000则表示验PIN成功,否则表示验PIN失败。
步骤f3:将当前编号加1,结束;
步骤f4:控制显示屏显示卡片操作错误;
步骤f5:将当前编号初始化为0,结束。
步骤g1:根据保存的第一数据和预设缓存中存储的数据生成口令生成指令,并向卡片发送口令生成指令;
本实施例中具体的,若当前的模式标志为0xA1,则根据第一数据和预设缓存中存储的数据生成的口令生成指令格式为:0x80AE8000 nn第一数据,其中,nn表示第一数据(CDOLData)的长度。
若当前的模式标志为0xA2,则根据第一数据和预设缓存中存储的数据生成的口令生成指令格式为:0x80AE8000 nn CDOLData+挑战码,其中,nn表示CDOLData+挑战码的长度。
若当前的模式标志为0xA3,则根据第一数据和预设缓存中存储的数据生成的口令生成指令格式为:0x80AE8000 nn CDOLData+挑战码+金额与货币类型,其中,nn表示CDOLData+挑战码+金额与货币类型的长度。
若当前的模式标志为0xA4,则根据第一数据和预设缓存中存储的数据生成的口令生成指令格式为:0x80AE8000 nn CDOLData+签名值,其中,nn表示CDOLData+签名值的长度。
步骤g2:解析卡片返回的第二返回数据获取口令数据并校验;
进一步的,若当前的模式标志为0xA4,则本步骤之后还包括:用从卡片返回的第二返回数据中获取的口令数据作为密钥对保存的签名值进行加密运算,并将运算结果替换为新的口令数据。
步骤g3:判断校验是否成功,是则执行步骤g4,否则执行步骤g5;
具体的,判断所述口令数据是否符合TLV格式,是则校验成功,否则校验失败。
步骤g4:将当前编号加1,结束;
步骤g5:控制显示屏显示卡片操作错误,对卡片下电;
步骤g6:将当前编号初始化为0,结束。
步骤h1:控制显示屏提示用户输入签名值;
步骤h2:置数字输入标志=1;
步骤h3:判断确认标志,若等于1则执行步骤h4,若等于2则执行步骤h7,若等于0则结束;
步骤h4:置数字输入标志=0;
步骤h5:将输入数据作为签名值存入预设缓存;
步骤h6:将当前编号加1,结束;
步骤h7:控制显示屏显示输入失败,对卡片下电;
步骤h8:将当前编号初始化为0,结束;
步骤i1:对卡片下电;
步骤i2:根据保存的第二数据对口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,控制显示屏显示所述动态口令;
本实施例中具体地,根据保存的第二数据对口令数据进行压缩处理具体为:根据第二数据中位值为“1”的位地址,从口令数据的数据域数据中选择出与该位地址对应的位值重新组合成一个二进制数据,若组成的二进制数据不足整数字节数则在高位补零。
例如:第二数据为:00010100001111110001010000010111
口令数据的数据域数据为:01001101010110010110010111010010
压缩处理后的数据为:0001011001011010
进一步的,当第二数据与口令数据的数据域数据位长不一致时,包括以下处理:
1)若第二数据比口令数据的数据域数据长,则控制LED屏提示口令生成失败。
2)若口令数据的数据域数据比第二数据长,则在第二数据右侧补0,凑成和口令数据的数据域数据位长等同的数据。
本实施例中具体地,将压缩处理后的数据格式化得到动态口令具体为:将压缩后的二进制数用十进制数表示作为动态口令。
例如,压缩处理后的数据为:0001011001011010,则十六进制表示为0x165A,代表十进制数为:5722,则显示屏显示5722。
步骤i3:将当前编号初始化为0,结束。
上述步骤5中所述的数字输入类处理流程如图4所示,包括以下步骤:
步骤201:判断数字输入标志,若等于1则执行步骤202,若等于0则执行步骤208;
步骤202:启动超时定时器;
具体的,当超时定时器达到预设的按键操作超时时间时,会将超时标志置为1,否则超时标志默认为0。
步骤203:判断超时标志是否等于1,是则执行步骤204,否则执行步骤205;
步骤204:对卡片下电,控制显示屏提示操作超时,将当前编号初始化为0,然后执行步骤208;
步骤205:判断位数计数标志是否小于预设值,是则执行步骤206,否则执行步骤207;
步骤206:将位数计数标志的值加1,根据数字输入缓存的数值更新输入数据,然后执行步骤209;
步骤207:控制显示屏提示达到输入上限,执行步骤208;
步骤208:初始化位数计数标志为0,清空数字输入缓存;
步骤209:关闭超时定时器,设置键值标志为0,结束。
上述步骤6中所述的状态输入类处理流程如图5所示,包括以下步骤:
步骤301:判断模式标志的值是否大于0,是则执行步骤302,否则执行步骤309;
步骤302:判断位数计数标志是否大于0,是则执行步骤303,否则执行步骤309;
步骤303:判断键值标志的值,若等于0x0B则执行步骤307,若等于0x0C则执行步骤304;
步骤304:判断位数计数标志是否为0,是则执行步骤308,否则执行步骤305;
步骤305:清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1;
具体的,先清除数字输入缓存中最后存入的一个数值,然后用数字输入缓存中的数据更新输入数据。
步骤306:控制显示屏显示退格,然后执行步骤309。
步骤307:置确认标志=1,清空数字输入缓存,初始化位数计数标志为0,然后执行步骤309。
步骤308:置确认标志=2,然后执行步骤309。
步骤309:设置键值标志为0,结束。
实施例3
本实施例提供了一种基于卡片的动态口令生成设备,该设备包含有按键和显示屏,且按键主要包含数字类按键(如数字键0-9)和状态类按键(如取消键、OK键),该设备还包含有以下功能模块:
初始化模块,用于在设备上电后,初始化当前运行状态为第一状态;
第一判断模块,用于判断要执行的操作,用于判断是否需要输入数字,用于判断是否需要输入确认状态;
第一处理模块,用于在所述第一判断模块判断出要执行的操作是数字类按键操作且需要输入数字时,根据用户对数字类按键的按下操作获得输入数据;用于在所述第一判断模块判断出要执行的操作是状态类按键操作且需要输入确认状态时根据用户对状态类按键的按下操作获得确认状态;
第二判断模块,用于在所述第一判断模块判断出要执行的操作不是所述数字输入类按键操作或所述状态类按键操作时,判断当前运行状态;
第二处理模块,用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第六状态;
第三处理模块,用于在所述第二判断模块判断出当前运行状态是第六状态时,提示用户输入PIN码,并在所述第一处理模块获取的当前的确认状态为确认时将所述第一处理模块获取的当前的输入数据存储为PIN码,更新当前运行状态为第七状态;
第四处理模块,用于在所述第二判断模块判断出当前运行状态是第七状态时,获取存储的PIN码,生成验PIN指令发送给卡片,并在得知卡片验PIN成功后更新当前运行状态为第八状态;
第五处理模块,用于在所述第二判断模块判断出当前运行状态是第八状态时,根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态;
第六处理模块,用于在所述第二判断模块判断出当前运行状态是第九状态时,根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态。
其中,第一判断模块对于数字类按键操作或状态类按键操作的判断,可以具体通过中断模块和中断处理模块实现,具体如下:
所述中断模块,用于检测是否有按键被按下,当检测到有按键被按下时,置位按键IO中断标志;所述中断处理模块,用于检测按键IO中断标志是否被置位,当检测到按键IO中断被置位时,根据用户的按键输入设置键值标志的值,以及根据键值标志的值向数字输入缓存中写入数值,复位按键IO中断标志。
相应的,第一判断模块具体用于判断当前的键值标志的值,若属于第一预设范围,则判断出要执行的操作为数字类按键操作,若属于第二预设范围,则判断出要执行的操作为状态类按键操作。
其中,第一处理模块的功能实现可以具体如下:
第一处理模块,还具体用于在第一判断模块判断出要执行的操作是数字类按键操作且需要输入数字时,判断位数计数标志是否小于预设值,是则将位数计数标志的值加1,根据数字输入缓存中的数值更新输入数据;否则控制显示屏提示达到输入上限,初始化位数计数标志为初值,清空数字输入缓存,设置键值标志为默认值。
相应的,所述初始化模块,还用于初始化位数计数标志为初值;所述第一判断模块,还具体用于判断数字输入标志是否置位,是则表示需要输入数字,否则表示不需要输入数字;例如,所述初值=0,所述默认值=0。
进一步的,第一处理模块的功能实现还可以具体如下:
第一处理模块,还具体用于用于在第一判断模块判断出要执行的操作是状态类按键操作且需要输入确认状态时,判断键值标志的值,若为第五预设值则设置确认标志为第一数值,清空数字输入缓存,初始化位数计数标志为初值并设置键值标志为默认值;若为第六预设值则判断位数计数标志是否为初值,是则设置确认标志为第三数值并设置键值标志为默认值,否则执行清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1,控制显示屏显示退格,以及设置键值标志为默认值。
相应的,初始化模块,还用于初始化数字输入标志为第二数值,初始化位数计数标志为初值;第一判断模块,还具体用于判断位数计数标志是否大于初值,是则表示需要输入确认状态,否则表示不需要输入确认状态。例如,所述初值=0,所述默认值=0,所述第一数值=1,所述第二数值=0,所述第三数值=2。
本实施例提供的动态口令生成设备,可以仅支持一种口令生成模式,上面介绍的是一种仅支持第一预设模式的设备,如果仅支持第二预设模式,则该动态口令生成设备的功能模块主要包括:初始化模块、第一判断模块、第一处理模块、第二判断模块、第二处理模块、第三处理模块、第四处理模块、第五处理模块、第六处理模块和第七处理模块;相比仅支持第一预设模式的动态口令生成设备,新增了第七处理模块,并对原有第二处理模块的功能进行了改变,说明如下:
第七处理模块,用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第二状态。
进一步的,如果仅支持第三预设模式,则该动态口令生成设备的功能模块主要包括:初始化模块、第一判断模块、第一处理模块、第二判断模块、第二处理模块、第三处理模块、第四处理模块、第五处理模块、第六处理模块、第七处理模块、第八处理模块和第九处理模块;相比仅支持第二预设模式的动态口令生成设备,新增了第八处理模块和第九处理模块,并对原有第二处理模块和第七处理模块的功能进行了改变,说明如下:
第八处理模块,用于在所述第二判断模块判断出当前运行状态是第三状态时,判断货币标志是否置位,是则提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态;否则更新当前运行状态为第四状态;
第九处理模块,用于在所述第二判断模块判断出当前运行状态是第四状态时,提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,以及根据所述卡片返回的第一返回数据设置货币标志,更新当前运行状态为第二状态;
第七处理模块,具体用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第三状态。
进一步的,如果仅支持第四预设模式,则该动态口令生成设备的功能模块主要包括:初始化模块、第一判断模块、第一处理模块、第二判断模块、第二处理模块、第三处理模块、第四处理模块、第五处理模块、第六处理模块和第十处理模块;相比仅支持第一预设模式的动态口令生成设备,新增了第十处理模块,并对原有第二处理模块的功能进行了改变,说明如下:
第十处理模块,用于在所述第二判断模块判断出当前运行状态是第五状态时,提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第五状态。
本实施例提供的支持上述任意一种模式的动态口令生成设备,其中包含的第二处理模块所实现的从卡片返回的第一返回数据中获取第一数据和第二数据并保存的功能,具体实现方式为根据所述卡片返回的第一返回数据中的第一标识符和第二标识符获取第一数据并保存,根据第三标识符获取第二数据并保存。
进一步的第二处理模块,具体还用于判断对卡片上电是否成功,若上电成功则向所述卡片发送预设指令,解析卡片返回的第一返回数据,根据所述卡片返回的第一返回数据中的第一标识符和第二标识符获取第一数据并保存,根据第三标识符获取第二数据并保存,更新当前运行状态为第六状态;若上电失败则控制显示屏显示卡片操作错误,初始化当前运行状态为第一状态。
进一步的第三处理模块,具体用于在所述第二判断模块判断出当前运行状态是第六状态时,提示用户输入PIN码,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据记录为PIN码,更新当前运行状态为第七状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
第四处理模块,具体用于在所述第二判断模块判断出当前运行状态是第七状态时,获取存储的PIN码,生成验PIN指令发送给卡片,判断卡片验PIN是否成功,若成功则更新当前运行状态为第八状态;若失败则控制显示屏显示卡片操作错误,初始化当前运行状态为第一状态。
第五处理模块,具体用于在所述第二判断模块判断出当前运行状态是第八状态时,根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,判断校验是否成功,若校验成功则更新当前运行状态为第九状态;若校验失败则控制显示屏显示卡片操作错误,初始化当前运行状态为第一状态。
第六处理模块,具体用于在所述第二判断模块判断出当前运行状态是第九状态时,根据保存的第二数据中位值为1的位地址,从口令数据的数据域数据中选择出与该位地址对应的位值重新组合成一个二进制数,将所述二进制数转换为十进制数,将转换得到的十进制数作为动态口令,控制显示屏显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态。
或者是第六处理模块,具体用于在所述第二判断模块判断出当前运行状态是第九状态时,比对所述第二数据和所述口令数据的数据域数据的长度,若所述第二数据比所述口令数据的数据域数据长,则控制显示屏提示口令生成失败,若所述口令数据的数据域数据比所述第二数据长,则在第二数据右侧补零,凑成和所述口令数据的数据域数据位长一致的数据,然后根据保存的第二数据中位值为1的位地址,从口令数据的数据域数据中选择出与该位地址对应的位值重新组合成一个二进制数,将所述二进制数转换为十进制数,将转换得到的十进制数作为动态口令,控制显示屏显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态。
第七处理模块,具体用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为挑战码存入预设缓存,更新当前运行状态为第六状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
或者是第二处理模块,具体用于在第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,以及判断所述第一返回数据中是否有货币标签,是则置位货币标志并更新当前运行状态为第二状态;否则复位货币标志并更新当前运行状态为第二状态。
相应的,第八处理模块,具体用于在所述第二判断模块判断出当前运行状态是第三状态时,判断货币标志是否置位,是则提示用户输入货币编号,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则置位数字输入标志,将输入数据作为货币类型存入预设缓存,更新当前运行状态为第四状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
第九处理模块,具体用于在所述第二判断模块判断出当前运行状态是第四状态时,提示用户输入金额,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为金额存入预设缓存,更新当前运行状态为第六状态,若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
第十处理模块,具体用于在所述第二判断模块判断出当前运行状态是第五状态时,提示用户输入签名值,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为签名值存入预设缓存,更新当前运行状态为第六状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
进一步的,基于多种模式的动态口令生成设备,可以通过在设备上设置模式类按键供用户选择要使用的动态口令生成模式,例如,增加第一预设模式按键和第二预设模式按键,用于供用户选择动态口令生成模式。相应的,设备的功能模块的功能实现改变如下:
其中,初始化模块还用于在设备上电后,控制显示屏提示用户按下模式类按键;第二判断模块还用于,在判断键值标志的值属于第三预设范围时,继续判断要执行的操作。例如,第一预设模式按键对应的键值标志的值为0xA1,第二预设模式按键对应的键值标志的值为0xA2,相应的,第三预设范围为0xA1-0xA2。
进一步的,中断处理模块还用于根据键值标志的值设置模式标志的值,例如,键值标志的值为0xA1则设置模式标志的值为0xA1。相应的,初始化模块,还用于初始化模式标志的取值与运行状态集合的对应关系,当模式类按键被按下时,根据模式标志获取与其对应的运行状态集合;还具体用于初始化各个运行状态集合的当前运行状态为第一状态;第二判断模块,还具体用于判断所述初始化模块获取的所述运行状态集合下的当前运行状态。
例如,初始化模块,具体用于初始化取值为第一预设值的模式标志对应的运行状态集合为包括第一状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第二预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第三预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第三状态、第四状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第四预设值的模式标志对应的运行状态集合为包括第一状态、第五状态、第六状态、第七状态、第八状态和第九状态。
本发明提供的基于卡片的动态口令生成设备,口令数据是卡片结合了卡片内部数据和用户输入数据(例如挑战码、交易金额等)生成并返回给设备的,避免了口令数据被篡改的可能性,从而提高了动态口令生成的安全性。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (34)
1.一种基于卡片的动态口令生成方法,所述卡片插入到设备上,其特征在于,所述方法包括:
步骤S1:所述设备上电,初始化当前运行状态为第一状态;初始化模式标志的取值与运行状态集合的对应关系,提示用户按下模式类按键,当模式类按键被按下时,根据模式标志的取值获取与其对应的运行状态集合,然后执行步骤S2;
所述初始化当前运行状态为第一状态,具体为:初始化各个运行状态集合的当前运行状态为第一状态;所述初始化模式标志的取值与运行状态集合的对应关系具体为:初始化取值为第一预设值的模式标志对应的运行状态集合为包括第一状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第二预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第三预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第三状态、第四状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第四预设值的模式标志对应的运行状态集合为包括第一状态、第五状态、第六状态、第七状态、第八状态和第九状态;
步骤S2:所述设备判断要执行的操作,若是数字类按键操作则执行步骤S3;若是状态类按键操作则执行步骤S4,否则执行步骤S5;
步骤S3:所述设备判断是否需要输入数字,是则根据用户对数字类按键的按下操作获得输入数据,然后返回执行步骤S2;否则直接返回步骤S2;
步骤S4:所述设备判断是否需要输入确认状态,是则根据用户对状态类按键的按下操作获得确认状态,然后返回执行步骤S2;否则直接返回步骤S2;
步骤S5:所述设备判断当前运行状态;
所述判断当前运行状态,具体为:判断获取的所述运行状态集合下的当前运行状态;
若是第一状态则对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第五状态,然后返回执行步骤S2;
若是第六状态则提示用户输入PIN码,并在确认状态为确认时将输入数据存储为PIN码,更新当前运行状态为第七状态,然后返回步骤S2;
若是第七状态则获取存储的PIN码,生成验PIN指令发送给卡片,并在得知卡片验PIN成功后更新当前运行状态为第八状态,然后返回步骤S2;
若是第八状态,如果预设缓存中无数据则根据保存的第一数据生成口令生成指令发送给卡片,如果预设缓存中有数据则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态,然后返回步骤S2;
若预设缓存中存储的数据是签名值则所述校验成功后还包括用所述口令数据作为密钥对所述签名值进行加密运算,并用运算结果更新所述口令数据,然后执行所述更新当前状态为第九状态,返回步骤S2;
若是第九状态则根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态,然后返回步骤S2;
若是第五状态则提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回步骤S2;
所述方法还包括按键中断流程和中断处理流程,所述按键中断流程具体为:当有按键被按下时进入按键中断,置位按键IO中断标志,退出按键中断;所述中断处理流程具体为:当按键IO中断标志被置位时进入中断处理,根据用户的按键输入设置键值标志的值,以及根据键值标志的值向数字输入缓存中写入数值,清按键IO中断标志后退出中断处理;所述中断处理流程还包括:根据键值标志的值设置模式标志的值。
2.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于,所述步骤S2具体为:
所述设备判断键值标志的值,若属于第一预设范围,则确定要执行的操作为数字类按键操作,执行步骤S3,若属于第二预设范围,则确定要执行的操作为状态类按键操作,执行步骤S4;否则执行步骤S5;
所述步骤S1还包括,判断键值标志的值,若属于第三预设范围,则执行步骤S2,若为其他值,则提示用户按下模式类按键。
3.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述判断当前运行状态之后还包括,
若是第二状态则提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回执行步骤S2;
相应的,判断当前运行状态为第一状态时所述更新当前运行状态为第五状态替换为,更新当前运行状态为第二状态。
4.如权利要求3所述的基于卡片的动态口令生成方法,其特征在于:
所述判断当前运行状态为第一状态时还包括:判断所述卡片返回的第一返回数据中是否有货币标签,是则置位货币标志,否则复位货币标志;
所述判断当前运行状态之后还包括,
若是第三状态则判断货币标志是否置位,是则提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态,然后返回步骤S2;否则更新当前运行状态为第四状态,然后返回步骤S2;
若是第四状态则提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,然后返回步骤S2;
相应的,判断当前运行状态为第二状态时,所述更新当前运行状态为第六状态替换为更新当前运行状态为第三状态。
5.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述从卡片返回的第一返回数据中获取第一数据和第二数据并保存具体为:解析卡片返回的第一返回数据,根据所述第一返回数据中的第一标识符和第二标识符获取第一数据并保存,根据第三标识符获取第二数据并保存。
6.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述对卡片上电之后还包括判断上电是否成功,是则执行所述向卡片发送预设指令,否则显示卡片操作错误,初始化当前运行状态为第一状态后返回所述步骤S2。
7.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述提示用户输入PIN码,并在确认状态为确认时获取输入数据存储为PIN码,更新当前运行状态为第七状态,具体为:
步骤e1:提示用户输入PIN码;
步骤e2:置位数字输入标志;
步骤e3:判断确认标志,若等于第一数值则执行步骤e4,若等于第三数值则显示输入失败,对卡片下电,初始化当前运行状态为第一状态后返回所述步骤S2,若等于第二数值则返回所述步骤S2;
步骤e4:复位数字输入标志,将输入数据记录为PIN码,更新当前运行状态为第七状态,返回所述步骤S2。
8.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述验PIN成功后更新当前运行状态为第八状态,具体为:判断验PIN是否成功,是则更新当前运行状态为第八状态,然后返回所述步骤S2,否则显示卡片操作错误,初始化当前运行状态为第一状态后返回所述步骤S2。
9.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述校验成功后更新当前运行状态为第九状态,具体为:判断校验是否成功,是则更新当前运行状态为第九状态,然后返回所述步骤S2,否则显示卡片操作错误,初始化当前运行状态为第一状态后返回所述步骤S2。
10.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令具体为:根据第二数据中位值为1的位地址,从口令数据的数据域数据中选择出与该位地址对应的位值重新组合成一个二进制数,将所述二进制数转换为十进制数,将转换得到的十进制数作为动态口令。
11.如权利要求10所述的基于卡片的动态口令生成方法,其特征在于:所述压缩处理之前还包括,比对所述第二数据和所述口令数据的数据域数据的长度,若所述第二数据比所述口令数据的数据域数据长,则提示口令生成失败,若所述口令数据的数据域数据比所述第二数据长,则在第二数据右侧补零,凑成和所述口令数据的数据域数据位长一致的数据。
12.如权利要求3所述的基于卡片的动态口令生成方法,其特征在于:所述提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,具体为:
步骤b1:提示用户输入挑战码;
步骤b2:置位数字输入标志;
步骤b3:判断确认标志,若等于第一数值则执行步骤b4,若等于第三数值则显示输入失败,对卡片下电,初始化当前运行状态为第一状态后返回所述步骤S2,若等于第二数值则返回所述步骤S2;
步骤b4:复位数字输入标志,将输入数据作为挑战码存入预设缓存,更新当前运行状态为第六状态,返回所述步骤S2。
13.如权利要求4所述的基于卡片的动态口令生成方法,其特征在于:所述提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态,具体为:
步骤c1:提示用户输入货币编号;
步骤c2:置位数字输入标志;
步骤c3:判断确认标志,若等于第一数值则执行步骤c4,若等于第三数值则显示输入失败,对卡片下电,初始化当前运行状态为第一状态后返回所述步骤S2,若等于第二数值则返回所述步骤S2;
步骤c4:复位数字输入标志,将输入数据作为货币类型存入预设缓存,更新当前运行状态为第四状态,返回所述步骤S2。
14.如权利要求4所述的基于卡片的动态口令生成方法,其特征在于:所述提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,具体为:
步骤d1:提示用户输入金额;
步骤d2:置位数字输入标志;
步骤d3:判断确认标志,若等于第一数值则执行步骤d4,若等于第三数值则显示输入失败,对卡片下电,初始化当前运行状态为第一状态后返回所述步骤S2,若等于第二数值则返回所述步骤S2;
步骤d4:复位数字输入标志,将输入数据作为金额存入预设缓存,更新当前运行状态为第六状态,返回所述步骤S2。
15.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态,具体为:
步骤h1:提示用户输入签名值;
步骤h2:置位数字输入标志;
步骤h3:判断确认标志,若等于第一数值则执行步骤h4,若等于第三数值则显示输入失败,对卡片下电,初始化当前运行状态为第一状态后返回所述步骤S2,若等于第二数值则返回所述步骤S2;
步骤h4:复位数字输入标志,将输入数据作为签名值存入预设缓存,更新当前运行状态为第六状态,返回所述步骤S2。
16.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述步骤S1还包括初始化位数计数标志为初值;
所述步骤S3所述判断是否需要输入数字具体为,判断数字输入标志是否置位,是则表示需要输入数字,否则表示不需要输入数字;
步骤S3所述根据用户对数字类按键的按下操作获得输入数据具体为:
步骤3-1:判断位数计数标志是否小于预设值,是则将位数计数标志的值加1,根据数字输入缓存中的数值更新输入数据,然后执行步骤3-2,否则提示达到输入上限,初始化位数计数标志,清空数字输入缓存,然后执行步骤3-2;
步骤3-2:设置键值标志为默认值。
17.如权利要求1所述的基于卡片的动态口令生成方法,其特征在于:所述步骤S1还包括初始化确认标志为第二数值,初始化位数计数标志为初值;
所述步骤S4所述判断是否需要输入确认状态具体为,判断位数计数标志是否大于初值,是则表示需要输入确认状态,否则表示不需要输入确认状态;
所述步骤S4所述根据用户对状态类按键的按下操作获得确认状态具体为:
步骤4-1:判断键值标志的值,若为第五预设值则设置确认标志为第一数值,清空数字输入缓存,初始化位数计数标志为初值,执行步骤4-4;若为第六预设值则执行步骤4-2;
步骤4-2:判断位数计数标志是否为初值,是则设置确认标志为第三数值,执行步骤4-4;否则执行步骤4-3;
步骤4-3:清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1,控制显示屏显示退格,执行步骤4-4;
步骤4-4:设置键值标志为默认值;
所述确认标志等于第一数值表示获得的确认状态为确认,所述确认标志等于第三数值表示获得的确认状态为取消,所述确认标志等于第二数值表示等待获取确认状态。
18.一种基于卡片的动态口令生成设备,所述设备包括按键和显示屏,其特征在于,所述设备还包括:
初始化模块,用于在设备上电后,初始化各个运行状态集合的当前运行状态为第一状态;控制显示屏提示用户按下模式类按键;当模式类按键被按下时,根据模式标志的取值获取与其对应的运行状态集合;用于初始化取值为第一预设值的模式标志对应的运行状态集合为包括第一状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第二预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第三预设值的模式标志对应的运行状态集合为包括第一状态、第二状态、第三状态、第四状态、第六状态、第七状态、第八状态和第九状态,和/或初始化取值为第四预设值的模式标志对应的运行状态集合为包括第一状态、第五状态、第六状态、第七状态、第八状态和第九状态;
第一判断模块,用于判断要执行的操作,用于判断是否需要输入数字,用于判断是否需要输入确认状态;
第一处理模块,用于在所述第一判断模块判断出要执行的操作是数字类按键操作且需要输入数字时,根据用户对数字类按键的按下操作获得输入数据;用于在所述第一判断模块判断出要执行的操作是状态类按键操作且需要输入确认状态时根据用户对状态类按键的按下操作获得确认状态;
第二判断模块,用于在所述第一判断模块判断出要执行的操作不是所述数字输入类按键操作或所述状态类按键操作时,判断当前运行状态;还具体用于判断所述初始化模块获取的所述运行状态集合下的当前运行状态;
第二处理模块,用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第五状态;
第三处理模块,用于在所述第二判断模块判断出当前运行状态是第六状态时,提示用户输入PIN码,并在所述第一处理模块获取的当前的确认状态为确认时将所述第一处理模块获取的当前的输入数据存储为PIN码,更新当前运行状态为第七状态;
第四处理模块,用于在所述第二判断模块判断出当前运行状态是第七状态时,获取存储的PIN码,生成验PIN指令发送给卡片,并在得知卡片验PIN成功后更新当前运行状态为第八状态;
第五处理模块,用于在所述第二判断模块判断出当前运行状态是第八状态时,如果预设缓存中无数据则根据保存的第一数据生成口令生成指令发送给卡片,如果预设缓存中有数据则根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,并在校验成功后更新当前运行状态为第九状态;
第六处理模块,用于在所述第二判断模块判断出当前运行状态是第九状态时,根据保存的第二数据对所述口令数据进行压缩处理,并将压缩处理后的数据格式化得到动态口令,显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态;
所述设备还包括第十处理模块,用于在所述第二判断模块判断出当前运行状态是第五状态时,提示用户输入签名值,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
所述第五处理模块,还用于在校验成功后,用从卡片返回的第二返回数据中获取的口令数据作为密钥对保存的签名值进行加密运算,并用运算结果更新所述口令数据;
所述设备还包括中断模块和中断处理模块;
所述中断模块,用于检测是否有按键被按下,当检测到有按键被按下时,置位按键IO中断标志;
所述中断处理模块,用于检测按键IO中断标志是否被置位,当检测到按键IO中断被置位时,根据用户的按键输入设置键值标志的值,以及根据键值标志的值向数字输入缓存中写入数值,复位按键IO中断标志;还用于根据键值标志的值设置模式标志的值。
19.如权利要求18所述的设备,其特征在于,所述第一判断模块,具体用于判断键值标志的值,若属于第一预设范围,则判断出要执行的操作为数字类按键操作,若属于第二预设范围,则判断出要执行的操作为状态类按键操作;
所述第一判断模块,还具体用于当键值标志的值属于第三预设范围时,执行所述判断要执行的操作。
20.如权利要求18所述的设备,其特征在于,所述设备还包括第七处理模块,用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,更新当前运行状态为第二状态。
21.如权利要求20所述的设备,其特征在于,所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,并从卡片返回的第一返回数据中获取第一数据和第二数据并保存,以及判断卡片返回的所述第一返回数据中是否有货币标签,是则置位货币标志并更新当前运行状态为第二状态;否则复位货币标志并更新当前运行状态为第二状态;
所述设备还包括第八处理模块,用于在所述第二判断模块判断出当前运行状态是第三状态时,判断货币标志是否置位,是则提示用户输入货币编号,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第四状态;否则更新当前运行状态为第四状态;
所述设备还包括第九处理模块,用于在所述第二判断模块判断出当前运行状态是第四状态时,提示用户输入金额,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第六状态;
所述第七处理模块,具体用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,并在确认状态为确认时获取输入数据存入预设缓存,更新当前运行状态为第三状态。
22.如权利要求18所述的设备,其特征在于,所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,上电成功后向所述卡片发送预设指令,解析卡片返回的第一返回数据,根据所述卡片返回的第一返回数据中的第一标识符和第二标识符获取第一数据并保存,根据第三标识符获取第二数据并保存,更新当前运行状态为第六状态。
23.如权利要求18所述的设备,其特征在于,所述第二处理模块,具体用于在所述第二判断模块判断出当前运行状态是第一状态时,对所述卡片上电,判断上电是否成功,若上电成功后向所述卡片发送预设指令,解析卡片返回的第一返回数据,根据所述卡片返回的第一返回数据中的第一标识符和第二标识符获取第一数据并保存,根据第三标识符获取第二数据并保存,更新当前运行状态为第六状态;若上电失败则控制显示屏显示卡片操作错误,初始化当前运行状态为第一状态。
24.如权利要求18所述的设备,其特征在于,所述第三处理模块,具体用于在所述第二判断模块判断出当前运行状态是第六状态时,提示用户输入PIN码,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据记录为PIN码,更新当前运行状态为第七状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
25.如权利要求18所述的设备,其特征在于,所述第四处理模块,具体用于在所述第二判断模块判断出当前运行状态是第七状态时,获取存储的PIN码,生成验PIN指令发送给卡片,判断卡片验PIN是否成功,若成功则更新当前运行状态为第八状态;若失败则控制显示屏显示卡片操作错误,初始化当前运行状态为第一状态。
26.如权利要求18所述的设备,其特征在于,所述第五处理模块,具体用于在所述第二判断模块判断出当前运行状态是第八状态时,根据保存的第一数据和预设缓存中存储的数据生成口令生成指令发送给卡片,从卡片返回的第二返回数据中获取口令数据并校验,判断校验是否成功,若校验成功则更新当前运行状态为第九状态;若校验失败则控制显示屏显示卡片操作错误,初始化当前运行状态为第一状态。
27.如权利要求18所述的设备,其特征在于,所述第六处理模块,用于在所述第二判断模块判断出当前运行状态是第九状态时,根据保存的第二数据中位值为1的位地址,从口令数据的数据域数据中选择出与该位地址对应的位值重新组合成一个二进制数,将所述二进制数转换为十进制数,将转换得到的十进制数作为动态口令,控制显示屏显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态。
28.如权利要求27所述的设备,其特征在于,所述第六处理模块,用于在所述第二判断模块判断出当前运行状态是第九状态时,比对所述第二数据和所述口令数据的数据域数据的长度,若所述第二数据比所述口令数据的数据域数据长,则控制显示屏提示口令生成失败,若所述口令数据的数据域数据比所述第二数据长,则在第二数据右侧补零,凑成和所述口令数据的数据域数据位长一致的数据,然后根据保存的第二数据中位值为1的位地址,从口令数据的数据域数据中选择出与该位地址对应的位值重新组合成一个二进制数,将所述二进制数转换为十进制数,将转换得到的十进制数作为动态口令,控制显示屏显示所述动态口令,对所述卡片下电,初始化当前运行状态为第一状态。
29.如权利要求20所述的设备,其特征在于,所述第七处理模块,具体用于在所述第二判断模块判断出当前运行状态是第二状态时,提示用户输入挑战码,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为挑战码存入预设缓存,更新当前运行状态为第六状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
30.如权利要求21所述的设备,其特征在于,所述第八处理模块,具体用于在所述第二判断模块判断出当前运行状态是第三状态时,判断货币标志是否置位,是则提示用户输入货币编号,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为货币类型存入预设缓存,更新当前运行状态为第四状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
31.如权利要求21所述的设备,其特征在于,所述第九处理模块,具体用于在所述第二判断模块判断出当前运行状态是第四状态时,提示用户输入金额,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为金额存入预设缓存,更新当前运行状态为第六状态,若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
32.如权利要求18所述的设备,其特征在于,所述第十处理模块,具体用于在所述第二判断模块判断出当前运行状态是第五状态时,提示用户输入签名值,置位数字输入标志,判断确认标志,若所述确认标志等于第一数值则复位数字输入标志,将输入数据作为签名值存入预设缓存,更新当前运行状态为第六状态;若所述确认标志等于第三数值则控制显示屏显示输入失败,对卡片下电,初始化当前运行状态为第一状态。
33.如权利要求18所述的设备,其特征在于,所述初始化模块,还用于初始化位数计数标志为初值;
所述第一判断模块,还具体用于判断数字输入标志是否置位,是则表示需要输入数字,否则表示不需要输入数字;
所述第一处理模块,还具体用于在第一判断模块判断出要执行的操作是数字类按键操作且需要输入数字时,判断位数计数标志是否小于预设值,是则将位数计数标志的值加1,根据数字输入缓存中的数值更新输入数据;否则控制显示屏提示达到输入上限,初始化位数计数标志为初值,清空数字输入缓存,设置键值标志为默认值。
34.如权利要求18所述的设备,其特征在于,所述初始化模块,还用于初始化数字输入标志为第二数值,初始化位数计数标志为初值;
所述第一判断模块,还具体用于判断位数计数标志是否大于初值,是则表示需要输入确认状态,否则表示不需要输入确认状态;
所述第一处理模块,还具体用于在第一判断模块判断出要执行的操作是状态类按键操作且需要输入确认状态时,判断键值标志的值,若为第五预设值则设置确认标志为第一数值,清空数字输入缓存,初始化位数计数标志为初值并设置键值标志为默认值;若为第六预设值则判断位数计数标志是否为初值,是则设置确认标志为第三数值并设置键值标志为默认值,否则执行清除数字输入缓存中的一个数值,并更新输入数据,将位数计数标志的值减1,控制显示屏显示退格,以及设置键值标志为默认值。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410840454.XA CN104539430B (zh) | 2014-12-30 | 2014-12-30 | 一种基于卡片的动态口令生成方法及设备 |
PCT/CN2015/095270 WO2016107332A1 (zh) | 2014-12-30 | 2015-11-23 | 一种基于卡片的动态口令生成方法及设备 |
US15/529,130 US10397200B2 (en) | 2014-12-30 | 2015-11-23 | Card-based dynamic password generation method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410840454.XA CN104539430B (zh) | 2014-12-30 | 2014-12-30 | 一种基于卡片的动态口令生成方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104539430A CN104539430A (zh) | 2015-04-22 |
CN104539430B true CN104539430B (zh) | 2018-11-30 |
Family
ID=52854901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410840454.XA Active CN104539430B (zh) | 2014-12-30 | 2014-12-30 | 一种基于卡片的动态口令生成方法及设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10397200B2 (zh) |
CN (1) | CN104539430B (zh) |
WO (1) | WO2016107332A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539430B (zh) * | 2014-12-30 | 2018-11-30 | 飞天诚信科技股份有限公司 | 一种基于卡片的动态口令生成方法及设备 |
US10572376B2 (en) * | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10333913B2 (en) * | 2017-05-15 | 2019-06-25 | International Business Machines Corporation | Dynamic object passwords |
CN108038694B (zh) | 2017-12-11 | 2019-03-29 | 飞天诚信科技股份有限公司 | 一种具有指纹验证功能的金融卡及其工作方法 |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
CN112636910B (zh) * | 2020-12-29 | 2021-08-24 | 北京深思数盾科技股份有限公司 | 临时密码的生成与验证方法、设备及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101632086A (zh) * | 2007-02-20 | 2010-01-20 | 科里普托马迪克公司 | 认证设备和方法 |
CN102377570A (zh) * | 2011-11-07 | 2012-03-14 | 飞天诚信科技股份有限公司 | 一种生成动态口令的方法和装置 |
CN103312517A (zh) * | 2013-06-28 | 2013-09-18 | 飞天诚信科技股份有限公司 | 一种双用途设备共用显示屏和按键的实现方法 |
CN103746816A (zh) * | 2014-02-18 | 2014-04-23 | 飞天诚信科技股份有限公司 | 一种多功能认证设备及其工作方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2290577B1 (en) * | 2000-02-18 | 2017-08-16 | Vasco Data Security International GmbH | Token device having a USB connector |
US9251637B2 (en) * | 2006-11-15 | 2016-02-02 | Bank Of America Corporation | Method and apparatus for using at least a portion of a one-time password as a dynamic card verification value |
US20080201264A1 (en) * | 2007-02-17 | 2008-08-21 | Brown Kerry D | Payment card financial transaction authenticator |
PL2043036T3 (pl) * | 2007-09-20 | 2011-02-28 | Tds Todos Data System Ab | System, sposób oraz urządzenie do umożliwiania interakcji z dynamicznym bezpieczeństwem |
CN101163014A (zh) * | 2007-11-30 | 2008-04-16 | 中国电信股份有限公司 | 一种动态口令身份认证系统和方法 |
CN101296241B (zh) * | 2008-06-30 | 2011-12-28 | 飞天诚信科技股份有限公司 | 基于口令卡提高身份认证安全性的方法 |
US8814052B2 (en) * | 2008-08-20 | 2014-08-26 | X-Card Holdings, Llc | Secure smart card system |
US9158905B2 (en) * | 2008-09-28 | 2015-10-13 | Feitian Technologies Co., Ltd. | Method for computer startup protection and system thereof |
US8369521B2 (en) | 2008-10-17 | 2013-02-05 | Oracle International Corporation | Smart card based encryption key and password generation and management |
US8201747B2 (en) * | 2008-11-26 | 2012-06-19 | Qsecure, Inc. | Auto-sequencing financial payment display card |
US20100241865A1 (en) * | 2009-03-19 | 2010-09-23 | Chunghwa Telecom Co., Ltd | One-Time Password System Capable of Defending Against Phishing Attacks |
CN101895391A (zh) * | 2009-04-21 | 2010-11-24 | 谈剑锋 | 卡式动态密码身份认证设备及其实现方法 |
US8413894B2 (en) * | 2009-11-05 | 2013-04-09 | X-Card Holdings, Llc | Card with illuminated codes for use in secure transactions |
US20120260324A1 (en) * | 2009-11-06 | 2012-10-11 | Emue Holdings Pty Ltd. | Method and a system for validating identifiers |
TW201250601A (en) * | 2011-06-01 | 2012-12-16 | Ultracap Technologies Corp | Smart card with regenerative power |
CN102377783B (zh) * | 2011-11-07 | 2014-03-12 | 飞天诚信科技股份有限公司 | 一种动态口令生成及认证的方法和系统 |
EP2885904B1 (en) * | 2012-08-03 | 2018-04-25 | Vasco Data Security International GmbH | User-convenient authentication method and apparatus using a mobile authentication application |
US9218596B2 (en) * | 2014-04-28 | 2015-12-22 | Bank Of America Corporation | Method and apparatus for providing real time mutable credit card information |
CN104539430B (zh) * | 2014-12-30 | 2018-11-30 | 飞天诚信科技股份有限公司 | 一种基于卡片的动态口令生成方法及设备 |
-
2014
- 2014-12-30 CN CN201410840454.XA patent/CN104539430B/zh active Active
-
2015
- 2015-11-23 US US15/529,130 patent/US10397200B2/en active Active
- 2015-11-23 WO PCT/CN2015/095270 patent/WO2016107332A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101632086A (zh) * | 2007-02-20 | 2010-01-20 | 科里普托马迪克公司 | 认证设备和方法 |
CN102377570A (zh) * | 2011-11-07 | 2012-03-14 | 飞天诚信科技股份有限公司 | 一种生成动态口令的方法和装置 |
CN103312517A (zh) * | 2013-06-28 | 2013-09-18 | 飞天诚信科技股份有限公司 | 一种双用途设备共用显示屏和按键的实现方法 |
CN103746816A (zh) * | 2014-02-18 | 2014-04-23 | 飞天诚信科技股份有限公司 | 一种多功能认证设备及其工作方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2016107332A1 (zh) | 2016-07-07 |
US10397200B2 (en) | 2019-08-27 |
US20170295149A1 (en) | 2017-10-12 |
CN104539430A (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104539430B (zh) | 一种基于卡片的动态口令生成方法及设备 | |
CN107194697B (zh) | 通过移动终端提供授权的方法及系统 | |
CN104408826B (zh) | 基于移动终端的公用充电桩及支付方法 | |
CN105912474B (zh) | 一种游戏在线调试方法、系统及编辑服务端 | |
CN103236116B (zh) | 电子储物柜箱格存取系统及投递方法 | |
CN103632075B (zh) | 鉴权装置及鉴权方法 | |
CN104182678A (zh) | 密码验证装置及密码验证方法 | |
CN106851602A (zh) | 一种交易系统短信验证方法及系统 | |
CN102158488A (zh) | 动态口令生成方法及装置、认证方法及系统 | |
CN104506319B (zh) | 一种多种子动态令牌的工作方法 | |
CN101141328A (zh) | 一种模拟Diameter服务器端的方法及其装置 | |
CN110264185A (zh) | 一种多功能缴费系统、装置及方法 | |
CN102685121B (zh) | 一种数字签名方法和装置 | |
CN108038979B (zh) | 基于sts预付费系统的可持续操作方法 | |
CN103473093B (zh) | 一种管理卡片上应用的方法 | |
CN104092675B (zh) | 一种基于主从通信结构的处理冲正的方法和终端 | |
CN106485480A (zh) | 一种终端充值方法及系统、一种网络支付系统 | |
CN103065390A (zh) | 一种游戏游艺机管理系统 | |
CN202904730U (zh) | 非接触式ic卡通用投币机 | |
CN109214746A (zh) | 投递方法及系统 | |
CN103379210B (zh) | 一种基于手机特性适配性游戏方法和装置 | |
JP2011152343A (ja) | 遊技機、主制御部、主制御基板、後段部、周辺基板、認証方法及び認証プログラム | |
JP5067742B2 (ja) | 遊技機、後段部、周辺基板、認証方法及び認証プログラム | |
CN107360126A (zh) | 一种利用图形标识码登录客户端的方法、系统和终端 | |
CN210691382U (zh) | 一种多功能缴费装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |