前些日子说道给网站开发认证狗的事,今天举几个例子。
上次说道认证狗的原理,用的vikey的狗,有兴趣的朋友可以去淘宝看下他们店,看下他们的说明文档,应该就差不多了。
其实是用js调用activeX控件,操作加密狗内部的数据,因为我买的是标准狗,用的是3DES的加密算法,所以简单的说下我开发的过程(不知道对不对,第一次做这个开发)
首先讲过原理,是用php在服务端生成一个随机数,然后传到客户端,然后客户端用加密狗中秘钥加密,返回服务端,同时服务端也用相同的秘钥加密,然后比对,一样即成功,不一样则失败。
(以下是我第一次的开发过程,如果有某天,某个人看见了某个地方有某个错误,请评论指正,感激不尽!)
因为vikey使用的24位的秘钥,(不懂密码学,所以对加密算法不了解)密文也同样是24位的,所以要php生成24位的随机数,我采用的是字母数字混合的形式,然后存在SESSION中。
vikey中的js函数,其实我就用到了两个,一个是LoadViKeyInterface(),这个是建立控件的,还有是Des3Encrypt(),这个是3DES加密,CheckHasVikey();这个可加可不加,是检测是否拔掉加密狗的,我用来验证是不是插入加密狗。
然后用php中SESSION,用js求出加密后的加密值,放在隐藏的表单中(此处求解,我问了CSDN,没人理我,就是3DES加密,知道密文,明文,能否推出秘钥),我是放在单击登陆按钮之后执行的,这个时候,如果不出意外,已经传过去了,然后后台也对比下,或者你可以选择用服务端解密下,看看和随机数是否一样。
这里要注意一个问题,如果传值为空,那么就是没插加密狗或者是狗不对,可以选择在前台做个加密狗判断CheckHasVikey();的验证。
这样一个用硬件狗验证的登陆就做好了,但是有个问题,就是秘钥的问题,秘钥存在服务器的php中,如果有人知道了秘钥,再做一个相同的狗,也就没办法了,但是一般情况下,这种是不会发生的,但是总有万一,所以打算在以后再开发的时候,将狗的序列号提交到服务器上去,然后在写入狗的秘钥的时候,自己写一套算法,用狗的序列号来生成一个,秘钥,服务端也是这样做,获取过来狗的序列号,然后生成秘钥,这样秘钥就变成动态的,或者可以写入数据库,秘钥和序列对应起来,也是比较安全的一种做法!
已有 0/1989 人参与