Sub Logon_OnClick on error resume next dim serverdigest,clientdigest dim key Dim TheForm dim RndText dim Pin dim flag flag=0 Set TheForm = Document.forms("form1") if theform.userName.value="" then alert("用户名为空,请填写用户名!") exit sub end if if theform.password.value="" then alert("密码为空,请填写密码!") exit sub else key=theform.password.value end if pin="mks" RndText ="123456" serverdigest=string(32,0) clientdigest=string(32,0) '打开设备 ePass.OpenDevice 1, "" if err then flag=flag+1 alert("请插入电子钥匙盘") exit sub 'msgbox "open device error:" & (err.number and &hff) else 'msgbox "open device success!" end if '进入计算目录 epass.ChangeDir &h010000+&h300,0,"SCMKS" if err then flag=flag+1 'msgbox "ChangeDir error:" & (err.number and &hff) else 'msgbox "ChangeDir success!" end if '验证pin ePass.VerifyPIN 0, Pin if err then flag=flag+1 'msgbox "VerifyPIN error:" & (err.number and &hff) else 'msgbox "VerifyPIN success!" end if '打开第一个key文件 ePass.OpenFile 0, 1 if err then flag=flag+1 'msgbox "Open first key File error:" & (err.number and &hff) else 'msgbox "Open first key File success!" end if '进行客户端计算 clientDigest = ePass.HashToken (1, 2,RndText) if err then flag=flag+1 'msgbox "HashToken error:" & (err.number and &hff) else 'msgbox "HashToken success!" end if '关闭设备 epass.CloseDevice if err then flag=flag+1 'msgbox "close device error:" & (err.number and &hff) else 'msgbox "close device success!" end if '进行软件计算 epass.Soft_MD5Hmac 2,RndText,Key,serverdigest if err then flag=flag+1 'msgbox "Soft_MD5Hash error:" & (err.number and &hff) else 'msgbox "Soft_MD5Hash success!" & serverdigest end if 'msgbox "Soft_MD5Hash success!" & serverdigest &"---"& clientdigest '判断软件计算与硬件计算是否相同。 if clientdigest<> serverdigest then alert( "电子钥匙认证失败!") exit sub else 'msgbox "认证成功" TheForm.submit end if 'msgbox flag end sub Sub Modify_OnClick on error resume next dim serverdigest,clientdigest dim key Dim TheForm dim RndText dim Pin dim flag flag=0 Set TheForm = Document.forms("form1") if theform.old_pwd.value="" then alert( "请填写旧密码!") exit sub end if if theform.new_pwd.value="" then alert( "请填写新密码!") exit sub end if if theform.confirm_pwd.value="" then alert( "请填写确认密码!") exit sub end if if theform.new_pwd.value <> theform.confirm_pwd.value then alert( "新密码和确认密码不一致,请重新填写!") theform.new_pwd.value="" theform.confirm_pwd.value="" exit sub end if 'msgbox theform.new_pwd.value 'msgbox Len (theform.new_pwd.value) if len (theform.new_pwd.value)<6 then alert( "密码长度不能少于6位!") exit sub end if key=theform.old_pwd.value pin="mks" RndText ="123456" serverdigest=string(32,0) clientdigest=string(32,0) '打开设备 ePass.OpenDevice 1, "" if err then flag=flag+1 'msgbox "open device error:" & (err.number and &hff) alert("请插入电子钥匙盘") exit sub else 'msgbox "open device success!" end if '进入计算目录 epass.ChangeDir &h300,0,"SCMKS" if err then flag=flag+1 'msgbox "ChangeDir error:" & (err.number and &hff) else 'msgbox "ChangeDir success!" end if '验证pin ePass.VerifyPIN 0, Pin if err then flag=flag+1 'msgbox "VerifyPIN error:" & (err.number and &hff) else 'msgbox "VerifyPIN success!" end if '打开第一个key文件 ePass.OpenFile 0, 1 if err then flag=flag+1 'msgbox "Open first key File error:" & (err.number and &hff) else 'msgbox "Open first key File success!" end if '进行客户端计算 clientDigest = ePass.HashToken (1, 2,RndText) if err then flag=flag+1 'msgbox "HashToken error:" & (err.number and &hff) else 'msgbox "HashToken success!" end if '关闭设备 epass.CloseDevice if err then flag=flag+1 'msgbox "close device error:" & (err.number and &hff) else 'msgbox "close device success!" end if '进行软件计算 epass.Soft_MD5Hmac 2,RndText,Key,serverdigest if err then flag=flag+1 'msgbox "Soft_MD5Hash error:" & (err.number and &hff) else 'msgbox "Soft_MD5Hash success!" & serverdigest end if '判断软件计算与硬件计算是否相同。 if clientdigest<> serverdigest then alert( "旧密码不正确,请重新填写!") theform.old_pwd.value="" else Write_OnClick 'msgbox "认证成功" 'TheForm.submit end if 'msgbox flag end sub Sub Write_OnClick on error resume next dim key1,key2,digest dim serialnumber Dim TheForm dim Key dim flag flag=0 Set TheForm = Document.forms("form1") key1="1234567812345678" key2="1234567812345678" digest="12345678123456781234567812345678" 'msgbox theform.key11.value 'msgbox theform.key12.value key=theform.new_pwd.value '打开设备 ePass.OpenDevice 1, "" if err then flag=flag+1 'msgbox "open device error:" & (err.number and &hff) else 'msgbox "open device success!" end if serialnumber = "01234567890123456" serialnumber = ePass.GetStrProperty(7, 0, 0) if err then flag=flag+1 'msgbox "GetStrProperty serialnum error:" & (err.number and &hff) else 'msgbox "GetStrProperty serialnum success is :" & serialnumber end if '生成key1,key2文件内容 epass.Soft_MD5HMAC 0,"",key,key1 if err then flag=flag+1 'msgbox "Soft_MD5HMAC first error:" & (err.number and &hff) else 'msgbox "Soft_MD5HMAC first success!" end if epass.Soft_MD5HMAC 1,"",key,key2 if err then flag=flag+1 'msgbox "Soft_MD5HMAC second error:" & (err.number and &hff) else 'msgbox "Soft_MD5HMAC second success!" end if '创建目录 epass.createdir &h010000+&h300,"SCMKS","",0 if err then if(err.number and &hff) <> &hf then '如果目录不存在 报错误 flag=flag+1 'msgbox "epass.createdir error:" & (err.number and &hff) else '如果目录存在,删除目录,再创建目录 err.clear 'msgbox "dir is already !" epass.deletedir &h300,0,"SCMKS" 'epass.deletedir 0,&hf001,"" if err then flag=flag+1 'msgbox "deletedir error:" & (err.number and &hff) else 'msgbox "deletedir success!" end if epass.createdir &h010000+&h300,"SCMKS","",0 if err then flag=flag+1 'msgbox "createdir error:" & (err.number and &hff) else 'msgbox "createdir success!" end if end if else 'msgbox "epass.createdir success!" end if '创建第一个key文件,并写入内容 'epass.createfile 0,1,16,2,0,0,0,0 epass.createfile 0,1,16,4,7,0,1,0 'epass.createfile 0,1,16,4,0,0,0,0' if err then flag=flag+1 'msgbox "createfile first error:" & (err.number and &hff) else 'msgbox "createfilr first success!" end if '写文件内容 epass.write 1,0,0,key1,16 if err then flag=flag+1 'msgbox "write first error:" & (err.number and &hff) else 'msgbox "write first success!" end if '关闭文件 epass.closefile if err then flag=flag+1 'msgbox "closefile first error:" & (err.number and &hff) else 'msgbox "closefile first success!" end if '创建第二个key文件 'epass.createfile 0,2,16,2,0,0,0,0 epass.createfile 0,2,16,4,7,0,1,0 'epass.createfile 0,2,16,4,0,0,0,0' if err then flag=flag+1 'msgbox "createfile second error:" & (err.number and &hff) else 'msgbox "createfile second success!" end if '写文件内容 epass.write 1,0,0,key2,16 if err then flag=flag+1 'msgbox "write second error:" & (err.number and &hff) else 'msgbox "write second success!" end if '关闭文件 epass.closefile if err then flag=flag+1 'msgbox "closefile second error:" & (err.number and &hff) else 'msgbox "closefile second success!" end if '关闭设备' epass.CloseDevice if err then flag=flag+1 'msgbox "close device error:" & (err.number and &hff) else 'msgbox "close device success!" end if if flag=0 then 'msgbox "写入密码成功" TheForm.submit else alert( "写入密码失败") end if end sub Sub InitPwd_OnClick(p) on error resume next dim key1,key2,digest dim serialnumber Dim TheForm dim Key dim flag flag=0 pin="mks" RndText ="123456" Set TheForm = Document.forms("form1") key1="1234567812345678" key2="1234567812345678" digest="12345678123456781234567812345678" 'msgbox theform.key11.value 'msgbox theform.key12.value key=p '打开设备 ePass.OpenDevice 1, "" if err then flag=flag+1 alert("请插入电子钥匙盘") exit sub 'msgbox "open device error:" & (err.number and &hff) else 'msgbox "open device success!" end if serialnumber = "01234567890123456" serialnumber = ePass.GetStrProperty(7, 0, 0) '验证pin ePass.VerifyPIN 0, Pin if err then flag=flag+1 msgbox "VerifyPIN error:" & (err.number and &hff) exit sub else 'msgbox "VerifyPIN success!" end if if err then flag=flag+1 'msgbox "GetStrProperty serialnum error:" & (err.number and &hff) else 'msgbox "GetStrProperty serialnum success is :" & serialnumber end if '生成key1,key2文件内容 epass.Soft_MD5HMAC 0,"",key,key1 if err then flag=flag+1 'msgbox "Soft_MD5HMAC first error:" & (err.number and &hff) else 'msgbox "Soft_MD5HMAC first success!" end if epass.Soft_MD5HMAC 1,"",key,key2 if err then flag=flag+1 'msgbox "Soft_MD5HMAC second error:" & (err.number and &hff) else 'msgbox "Soft_MD5HMAC second success!" end if '创建目录 epass.createdir &h010000+&h300,"SCMKS","",0 if err then if(err.number and &hff) <> &hf then '如果目录不存在 报错误 flag=flag+1 'msgbox "epass.createdir error:" & (err.number and &hff) else '如果目录存在,删除目录,再创建目录 err.clear 'msgbox "dir is already !" epass.deletedir &h300,0,"SCMKS" 'epass.deletedir 0,&hf001,"" if err then flag=flag+1 'msgbox "deletedir error:" & (err.number and &hff) else 'msgbox "deletedir success!" end if epass.createdir &h010000+&h300,"SCMKS","",0 if err then flag=flag+1 'msgbox "createdir error:" & (err.number and &hff) else 'msgbox "createdir success!" end if end if else 'msgbox "epass.createdir success!" end if '创建第一个key文件,并写入内容 'epass.createfile 0,1,16,2,0,0,0,0 epass.createfile 0,1,16,4,7,0,1,0 'epass.createfile 0,1,16,4,0,0,0,0' if err then flag=flag+1 'msgbox "createfile first error:" & (err.number and &hff) else 'msgbox "createfilr first success!" end if '写文件内容 epass.write 1,0,0,key1,16 if err then flag=flag+1 'msgbox "write first error:" & (err.number and &hff) else 'msgbox "write first success!" end if '关闭文件 epass.closefile if err then flag=flag+1 'msgbox "closefile first error:" & (err.number and &hff) else 'msgbox "closefile first success!" end if '创建第二个key文件 'epass.createfile 0,2,16,2,0,0,0,0 epass.createfile 0,2,16,4,7,0,1,0 'epass.createfile 0,2,16,4,0,0,0,0' if err then flag=flag+1 'msgbox "createfile second error:" & (err.number and &hff) else 'msgbox "createfile second success!" end if '写文件内容 epass.write 1,0,0,key2,16 if err then flag=flag+1 'msgbox "write second error:" & (err.number and &hff) else 'msgbox "write second success!" end if '关闭文件 epass.closefile if err then flag=flag+1 'msgbox "closefile second error:" & (err.number and &hff) else 'msgbox "closefile second success!" end if '关闭设备' epass.CloseDevice if err then flag=flag+1 'msgbox "close device error:" & (err.number and &hff) else 'msgbox "close device success!" end if if flag=0 then alert( "初始化密码成功") 'TheForm.submit else alert( "写入密码失败") end if end sub