具体实施方式
以下结合其中的较佳实施例对本发明方案进行详细说明。在下述说明中,首先针对本发明的登录验证方法的各实施例进行说明,再针对本发明的登录验证系统的实施例进行说明。
实施例一
图1中示出了本发明的登录验证方法实施例一的流程示意图。在本实施例一中,是以两个客户端一侧的处理过程为例进行说明。
如图1所示,本实施例一中的登录验证方法包括步骤:
步骤S101:第一客户端向登录服务器发送第一登录请求,并接收登录服务器根据第一登录请求返回的原始字符与映射后字符之间的映射关系;
步骤S102:第二客户端根据上述映射关系向上述登录服务器发送第二登录请求,该第二登录请求中包括根据上述映射关系确定的与用户信息对应的映射后信息。
根据本实施例中的方案,是由第一客户端向登录服务器发送第一登录请求,获得登录服务器根据该第一登录请求产生的原始字符与映射后字符之间的映射关系,再由第二客户端根据该映射关系向登录服务器发送第二登录请求,并在该第二登录请求中包括的是根据该映射关系所确定的与用户信息对应的映射后信息,这种登录方式,是通过两个客户端的联合来实现登录,由于病毒或者木马同时感染两个独立的客户端的难度极高,因此,即便是计算机病毒感染了其中一个客户端,也无法获得具体的用户信息,从而有效提高了登录验证的安全性,使用户信息的安全性得到了保障。
其中,登录服务器在生成上述映射关系时,可以是随机生成。此外,登录服务器在生成上述映射关系时,还可以生成与该映射关系对应的映射关系编号,并在向第一客户端发送上述映射关系的同时或者先后将该映射关系编号向第一客户端发送。第一客户端接收了登录服务器返回的映射关系编号,第二客户端在向登录服务器发送第二登录请求时,该第二登录请求中还可以包括有第一客户端接收到的上述映射关系编号。登录服务器接收到第二登录请求后,依据第二登录请求中的映射关系编号确定相应的映射关系,并根据确定的该映射关系确定与第二登录请求中的映射后信息对应的用户信息,将该用户信息与预存用户信息进行比对,以验证是否允许第二客户端的用户登录。
在其中一个具体示例中,上述用户信息可以包括用户密码,相应地,上述映射后信息可以包括基于上述映射关系确定的与该用户密码对应的映射后密码。也就是说,在第二客户端发送第二登录请求时,可以只依据上述映射关系对用户密码进行加密。
在另外一个具体示例中,上述用户信息可以包括用户名,相应地,上述映射后信息可以包括基于上述映射关系确定的与该用户名对应的映射后用户名。也就是说,在向第二客户端发送第二登录请求时,可以只依据上述映射关系对用户名进行加密。
在另外一个具体示例中,上述用户信息可以同时包括用户名与用户密码,相应地,上述映射后信息可以包括基于上述映射关系确定的与该用户名、用户密码对应的映射后用户名、映射后密码。也就是说,在第二客户端发送第二登录请求时,可以依据上述映射关系对用户名与用户密码同时进行加密。
当然,根据实际应用需要的不同,上述用户信息还可以是包括其他类型的信息,具体类型跟所所应用的系统类型有关,例如,对于登录学生管理系统来说,则用户信息可能包括学号、姓名、班级等信息,对于登录公司员工信息管理系统来说,用户信息可能包括部门、工号、姓名、工龄等信息,根据具体应用系统类型的不同可能会有所区别,在此不予赘述。
实施例二
图2中示出了本发明的登录验证方法实施例二的流程示意图。在本实施例二中,是以登录服务器一侧的处理过程为例进行说明。
如图2所示,本实施例中的登录验证方法包括步骤:
步骤S201:登录服务器接收第一客户端发送的第一登录请求;
步骤S202:登录服务器根据上述第一登录请求产生原始字符与映射后字符之间的映射关系,并将该映射关系向上述第一客户端发送;
步骤S203:登录服务器接收第二客户端发送的第二登录请求,该第二登录请求中包括映射后信息;
步骤S204:登录服务器根据上述映射关系确定与上述映射后信息对应的用户信息,并将该用户信息与预存用户信息进行比对。
其中,登录服务器在生成上述映射关系时,可以是随机生成。此外,登录服务器在生成上述映射关系时,还可以生成与该映射关系对应的映射关系编号,并在向第一客户端发送上述映射关系的同时或者先后将该映射关系编号向第一客户端发送。第一客户端接收登录服务器返回的映射关系编号后,第二客户端在向登录服务器发送第二登录请求时,该第二登录请求中还可以包括有第一客户端接收到的上述映射关系编号。登录服务器接收到第二登录请求后,依据第二登录请求中的映射关系编号确定相应的映射关系,并根据确定的该映射关系确定与第二登录请求中的映射后信息对应的用户信息,将该用户信息与预存用户信息进行比对,以验证是否允许第二客户端的用户登录。
在其中一个具体示例中,上述用户信息可以包括用户密码,相应地,上述映射后信息可以包括基于上述映射关系确定的与该用户密码对应的映射后密码。也就是说,在第二客户端发送第二登录请求时,可以只依据上述映射关系对用户密码进行加密。
在另外一个具体示例中,上述用户信息可以包括用户名,相应地,上述映射后信息可以包括基于上述映射关系确定的与该用户名对应的映射后用户名。也就是说,在向第二客户端发送第二登录请求时,可以只依据上述映射关系对用户名进行加密。
在另外一个具体示例中,上述用户信息可以同时包括用户名与用户密码,相应地,上述映射后信息可以包括基于上述映射关系确定的与该用户名、用户密码对应的映射后用户名、映射后密码。也就是说,在第二客户端发送第二登录请求时,可以依据上述映射关系对用户名与用户密码同时进行加密。
当然,根据实际应用需要的不同,上述用户信息还可以是包括其他类型的信息,具体类型跟所所应用的系统类型有关,例如,对于登录学生管理系统来说,则用户信息可能包括学号、姓名、班级等信息,对于登录公司员工信息管理系统来说,用户信息可能包括部门、工号、姓名、工龄等信息,根据具体应用系统类型的不同可能会有所区别,在此不予赘述。
实施例三
图3中示出了本发明的登录验证方法实施例三的流程示意图。在本实施例中,是结合两个客户端与登录服务器之间的交互过程为例进行说明。
如图3所示,本实施例中的登录验证方法包括步骤:
步骤S301:第一客户端向登录服务器发送第一登录请求;
步骤S302:登录服务器接收第一客户端发送的第一登录请求,根据该第一登录请求产生原始字符与映射后字符之间的映射关系,并将该映射关系向上述第一客户端发送;
步骤S303:第一客户端接收登录服务器根据第一登录请求返回的原始字符与映射后字符之间的映射关系;
步骤S304:第二客户端根据上述映射关系向上述登录服务器发送第二登录请求,该第二登录请求中包括根据上述映射关系确定的与用户信息对应的映射后信息;
步骤S305:登录服务器接收第二客户端发送的第二登录请求,根据上述映射关系确定与上述映射后信息对应的用户信息,并将该用户信息与预存用户信息进行比对。
其中,登录服务器在生成上述映射关系时,可以是随机生成。此外,登录服务器在生成上述映射关系时,还可以生成与该映射关系对应的映射关系编号,并在向第一客户端发送上述映射关系的同时或者先后将该映射关系编号发送给第一客户端。
在其中一个具体示例中,上述映射关系可以通过字符映射表的方式来体现,相应地,上述映射关系编号可以称之为密码表编号,由密码表编号以及字符映射表可以共同组成一个密码表。下表中示出了密码表的一个具体示例。
上表所示中,密码表编号是用于标识当前登录所用的密码表,一般情况下,同一个密码表编号仅会用一次,不会复用于其他登录过程。由于密码表编号主要是用于标识所采用的密码表,因此,在生成密码表编号时,可以是基于流水号来生成。
上述字符映射表,是用来体现原始字符与映射后字符之间的映射关系,是用于翻译加密字符对应真实字符的一个映射表。出于简单说明的目的,上表中仅仅是以数字为例进行说明。在实际建立字符映射表时,可以是包括字母、数字、特殊符号、汉字等等任何类型的信息。
在生成字符映射表时,可以采用随机的方式生成,例如,其中一种方式中,可以在确定原始字符并对其排序后,将排序了的原始字符的排列顺序随机打乱,并将打乱了顺序后的字符与原始字符按顺序一一对应,实现原始字符与映射后字符之间的映射关系。
另外一种方式中,可以是将所有原始字符复制一份作为备份字符,分别依次从原始字符中选择一个尚未映射的字符,并从备份字符中尚未选择的字符中随机选择一个字符作为所述尚未映射的字符的映射后字符。例如假设原始字符记为字符A、B、C、D......,备份字符记为A’、B’、C’、D’......。在确定了所有的原始字符后,在选择了某个字符(假设为A)时,从所有的备份字符中随机选择一个字符(假设为C’)作为字符A的映射后字符,然后再选择原始字符中的另外一个字符(假设为B),然后从备份字符去除了字符C’后剩下的所有字符中随机选择一个字符(假设为A’)作为字符B的映射后字符,如此类推,直至完成所有原始字符的映射。当然,根据实际需要,也可以采用其他的方式生成字符映射表,只要一个原始字符唯一对应一个映射后字符,一个映射后字符唯一对应一个原始字符即可。
假如要求第二客户端发送的第二登录请求中的用户密码填写映射后字符,如上表所示,假设第二登录请求中的用户密码为“7”,则该用户密码“7”实际上是加密密码,即映射后密码,其对应的原始密码应该是“0”。假设第二登录请求中的密码为“965328”,则该“965328”实际上也是加密密码,即映射后密码,其对应的真实密码应该是“694132”。
以用C++语言生成密码表编号与字符映射表为例,其中一个具体实现方式中,具体的实现代码可以是如下所述。
在第一客户端得到登录服务器返回的密码表后,第二客户端根据该密码表输入相关的登录信息,向登录服务器发送第二登录请求。在该第二登录请求中,包括有依据上述密码表确定的映射后信息,根据实际需要,可以只对需要进行加密的信息类型要求向登录服务器发送对应的映射后信息。以只需要将与用户密码对应的映射后密码向登录服务器发送为例,在向登录服务器发送的第二登录请求中,所包括的密码应当是基于上述密码表与原始的用户密码对应的映射后密码,而对于其他信息,例如用户名等等,则是原始的、未基于上述密码表进行映射的信息。
出于安全性的考虑因素,进一步加强安全性,在第二客户端向登录服务器发送的第二登录请求中,可以要求所有的用户信息都是基于上述密码表映射后的信息,以用户信息包含用户名与用户密码为例,第二登录请求中包含的用户名应当是基于上述密码表与原始的用户名对应的映射后用户名,第二登录请求中包含的用户密码应当是基于上述密码表与原始的用户密码对应的映射后密码。在第二登录请求中包括有密码表编号的情况下,第二登录请求中的密码表编号应当是登录服务器向第一客户端发送的原始的密码表编号。
以上表中示出的密码表为例,假如某用户的账号是2300223,密码是123456。那么,基于上表中所示的映射规则,用户账号2300223的映射后账号应当是8277882,密码123456映射后的映射后密码应当是382519。
在只需要对用户账号进行加密的情况下,在发出第二登录请求信息前输入相关用户信息时,用户输入的用户账号应当是映射后账号8277882,输入的用户密码应当是原始密码123456,同时用户可输入密码表编号2012000001,在输入这些相关信息后,第二客户端向登录服务器发送的第二登录请求中,包含的密码表编号是2012000001,包含的用户账号是映射后账号8277882,包含的用户密码是原始的用户密码123456。登录服务器接收到第二登录请求、依据密码表编号2012000001获得对应的密码表后,只需基于该密码表确定与映射后账号8277882的原始用户账号2300223,然后将该用户账号2300223与用户密码123456跟自身存储的账号与密码进行比对,验证判断是否允许该用户登录。
类似地,在只需要对用户密码进行加密的情况下,在发出第二登录请求信息前输入相关用户信息时,用户输入的用户账号应当是原始账号2300223,输入的用户密码应当是映射后密码382519,同时用户可输入密码表编号2012000001,在输入这些相关信息后,第二客户端向登录服务器发送的第二登录请求中,包含的密码表编号是2012000001,包含的用户账号是原始账号2300223,包含的用户密码是映射后密码382519。登录服务器接收到第二登录请求、依据密码表编号2012000001获得对应的密码表后,只需基于该密码表确定与映射后密码382519的原始密码123456,然后将该用户密码123456与用户账号2300223跟自身存储的账号与密码进行比对,判断该用户是否可以登录。
类似地,在需要对用户账号与用户密码同时进行加密的情况下,在发出第二登录请求信息前输入相关用户信息时,用户输入的用户账号应当是映射后账号8277882,输入的用户密码应当是映射后密码382519,同时用户可输入密码表编号2012000001,在输入这些相关信息后,第二客户端向登录服务器发送的第二登录请求中,包含的密码表编号是2012000001,包含的用户账号是映射后账号8277882,包含的用户密码是映射后密码382519。登录服务器接收到第二登录请求、依据密码表编号2012000001获得对应的密码表后,基于该密码表确定与映射后账号8277882对应的原始账号2300223、与映射后密码382519的原始密码123456,然后将该用户密码123456与用户账号2300223跟自身存储的账号与密码进行比对,判断该用户是否可以登录。
当然,出于简便说明的目的,上述说明中仅仅以用户账号、用户密码为例进行了说明。根据实际需要,在各种不同的应用系统中,所包含的用户信息也可以有所区别,例如,对于登录学生管理系统来说,用户信息可能包括学号、姓名、班级等信息,对于登录公司员工信息管理系统来说,用户信息可能包括部门、工号、姓名、工龄等信息,根据具体应用系统类型的不同可能会有所区别。针对这些用户信息,可以基于实际需要来确定对哪些用户信息需要将其映射后信息发送的登录服务器,具体的实现方式在此不予赘述。
登录服务器接收到第二客户端提交的第二登录请求后,根据密码表编号找到对应的密码表,然后对映射后账号与映射后密码基于对应的密码表进行映射解密,得到原始的、真正的用户账号与用户密码。然后在数据库中查找是否有匹配的用户账号与用户密码的记录,如果有,则说明这个用户的身份是有效的,允许其登录;如果没有,则说明当前登录无效,拒绝登录。
在其中一个具体实现方式中,以用C++编程语言实现登录服务器的处理过程为例,具体的实现代码可以是如下所述。
通过上述代码,可以得到了解码后的账号(存储在变量strTrueName)与解码后的密码(存储在变量strTruePass)。
在得到解码后的账号与密码后,还可以通过查询数据库来检查该账号是否有效。在其中一个实现方式中,检查该帐号是否有效的数据库SQL语句可以是:
string strSQL=″select*from USER_INFO where name=\″′+strTrueName+″\′and password=\″′+strTruePass +″\″′;
其中,上述第一客户端、第二客户端可以采用任何可能的设备实现,例如计算机、智能手机、平板电脑或者其他的智能终端设备等等。由于是通过独立的两个客户端来联合实现登录,而同一病毒与木马同时感染两台机器、并将这两台机器联系的可能性极小,因此极大地提高了用户登录的安全性。
由于第一客户端与第二客户端之间是相互独立的,那么,第一客户端接收到的密码表传达到第二客户端的方式,或者说第二客户端或者使用第二客户端的用户获得第一客户端接收到的密码表的方式,可以采用各种可能的方式进行。
其中一种最简单的方式是,是两个客户端所在的计算机、移动终端等是摆放在一起的,那么用户可以直接看到两台设备的显示,并直接进行操作。这种情况,对于那些需要同时使用多台计算机的应用场景极为适用,例如办公室、学校、拥有多台计算机的家庭等等,这些应用场景中的计算机数量比较多,可以直接实现对相邻计算机上的显示信息(例如本发明方案中第一客户端所在计算机接收的密码表)的查看,方便第二客户端的用户的登录,可以直接利用多台计算机来实现更安全的登录。
而对于两个客户端所在的计算机没有放置在一起、无法直接查看的情况,那么,可以通过与由第一客户端所在计算机的使用者(或者称之为协助者)通过电话、摄像头、邮件、彩信等其他通讯方式把第一客户端接收到的密码表告诉给使用第二客户端进行登录的使用者或者操作者,具体的通讯方式或者通讯类型不限,只要能够使应用第二客户端进行登录的用户能够得到该密码表,以便能够依据该密码表对需要进行映射加密的用户信息进行映射加密即可。
另外,在另一个实施例中,为了进一步确保安全性,在登录服务器产生了密码表时,可以同时为该密码表产生一个对应的有效期限,或者说应用该密码表的预设时间段,第二客户端应该在该预设时间段内向登录服务器发送包含该密码表的密码表编号的第二登录请求。换言之,登录服务器应当在预设时间段内接收包含该密码表的密码表编号的第二登录请求,如果超出该预设时间段,则登录服务器清除该密码表,以避免恶意用户的恶意使用。如果登录服务器在超出该预设时间段后接收到包含该密码表的密码表编号的第二登录请求,则可以向第二客户端返回该密码表不存在、密码错误等提示信息,同时也可以向第二客户端返回重新获取密码表的提示信息。
通过上述本发明方案,其通过两个客户端联合的方式进行登录,相当于采用两个终端联合实现登录,其极大地提高了安全性。
以客户端所在终端为计算机为例,无论木马或者病毒感染了其中的哪一台计算机,都无法猜测出用户的密码。因为木马或者病毒监控第一客户端所在计算机的一级登录的时候,只是得到一个密码表,用户并不在第一客户端所在计算机上进行输入操作,木马或者病毒得不到真实的密码。木马或者病毒监控第二客户端所在计算机的二级登录的时候,即便能够截获到用户输入的用户信息,但是这些输入的这些用户信息是加密的,而且仅一次性的,使用过后就无效的。木马或者病毒没有密码表,得不到正确的原始密码。
另一方面,木马或者病毒同时感染用户操作的两台计算机的难度很高,因为木马感染是随机性的,它控制不了用户操作的两台特定的计算机刚好都被感染上相同的木马或者病毒。此外,两台计算机有可能采用的是不同的操作系统,木马能实现兼容的难度很高,同时还得实现即时性的监控,这需要很庞大的后台运算。因此,要使得同一木马病毒同时感染用户操作的两台计算机几乎是不可能的。总的来说,两台计算机登录的安全门槛比单台计算机登录的安全门槛安全级别大为提高。在有需要的情况下,甚至可以是让第一客户端所在的计算机仅仅用于获取密码表,其他的软件不安装,也不访问和登陆其他无关网站,那么,根本就不会感染任何木马或者病毒,因而也更加不会出现安全性的问题。
此外,由于是两台计算机联合登录,那么对应可以配置两个操作员组合登录,对于一些特殊的系统不能单单信任一个操作员的情况下,两个操作员联合登录的能够进一步提高系统安全性的可信度。
根据上述登录验证方法,本发明还提供一种登录验证系统,本发明提供的登录验证系统,可以只包括上述第一客户端与第二客户端,也可以只包括上述登录服务器,也可以是同时包括上述第一客户端、第二客户端以及登录服务器。
图4中示出了本发明的登录验证系统实施例的结构示意图。在本实施例中,出于方便说明的目的,是以同时包括了第一客户端、第二客户端以及登录服务器为例进行说明。
如图4所示,在该实施例中,包括第一客户端401、第二客户端402以及登录服务器403,其中:
第一客户端401,用于向登录服务器403发送第一登录请求,并接收登录服务器403根据该第一登录请求返回的原始字符与映射后字符之间的映射关系;
第二客户端402,用于根据上述映射关系向上述登录服务器403发送第二登录请求,该第二登录请求中包括根据上述映射关系确定的与用户信息对应的映射后信息;
登录服务器403,用于接收第一客户端401发送的第一登录请求,根据该第一登录请求产生原始字符与映射后字符之间的上述映射关系,将该映射关系向上述第一客户端401发送,并接收第二客户端402发送的上述第二登录请求,该第二登录请求中包括映射后信息,并根据上述映射关系确定与上述映射后信息对应的用户信息,并将该用户信息与预存用户信息进行比对。
如图4所示,该登录服务器403具体可以包括:
信息收发模块4031,用于接收第一客户端发送的第一登录请求、第二客户端发送的第二登录请求,并将映射关系产生模块4032产生的映射关系向上述第一客户端发送,上述第二登录请求中包括映射后信息;
映射关系产生模块4032,用于根据上述第一登录请求产生原始字符与映射后字符之间的所述映射关系;
登录验证模块4033,用于根据上述映射关系确定与上述映射后信息对应的用户信息,并将该用户信息与预存用户信息进行比对。
在其中一个实施例中,上述映射关系产生模块4032还根据上述第一登录请求产生与上述映射关系对应的映射关系编号;上述信息收发模块4031还用于将该映射关系编号向上述第一客户端401发送;此时,上述第二登录请求中还包括所述映射关系编号。相应地,上述第一客户端401还用于接收登录服务器403根据第一登录请求返回的与上述映射关系对应的映射关系编号,第二客户端402发送的上述第二登录请求中还包括所述映射关系编号。
其中,映射关系产生模块4032生成上述映射关系时,可以是随机生成。
本发明的登录验证系统中各模块等的具体实现方式,例如产生映射关系的方式、产生映射关系编号的方式、用户信息具体包含的内容等等,可以与上述本发明的登录验证方法中的相同,在此不予赘述。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。