運行環境javascript
前端部分css
1.引用前端
//JS部分引用 <script type="text/javascript" src="Js/JQuery.js"></script> //基於JQuery <script type="text/javascript" src="Js/PassGuard/crypto-js.js"></script> <script type="text/javascript" src="Js/PassGuard/PassGuardCtrl.js" charset="utf-8"></script> <script type="text/javascript" src="Js/PassGuard/thickbox.js"></script>
2.隱藏域java
//隱藏域存儲三部分 密碼key, 隨機因子, 網卡等設備信息 <asp:HiddenField runat="server" ID="hidSKey" /> <asp:HiddenField runat="server" ID="hidEnStr" /> <asp:HiddenField runat="server" ID="hidMachineNetwork" />
3.初始化ajax
//初始化密碼控件 由JS初始化 <script type="text/javascript"> var pgeditor = new $.pge({ pgePath: "https://static.xxxx.com/Download/PassGuard/",//控件文件目錄 pgeId: "OcxPassword",//控件ID pgeEdittype: 0,//控件類型,0星號,1明文 pgeEreg1: "[\\s\\S]*",//輸入過程當中字符類型限制 pgeEreg2: "[\\s\\S]{0,30}", //輸入完畢後字符類型判斷條件 pgeMaxlength: 30,//容許最大輸入長度 pgeTabindex: 0,//tab鍵順序 pgeClass: "ocx_style",//控件css樣式 pgeInstallClass: "ocx_style",//針對安裝或升級 pgeOnkeydown: "checkInput()",//回車鍵響應函數 tabCallback: "input2",//非IE tab鍵焦點切換的ID //windows10相關 pgeWindowID: "password" + new Date().getTime() + 1, pgeRZRandNum: "<%=hidSKey.Value%>", pgeRZDataB: "<%=hidEnStr.Value%>" }); window.pgeCtrl = pgeditor; window.onload = function () { pgeditor.pgInitialize();//初始化控件 } </script>
4.點擊事件正則表達式
var length = pgeditor.pwdLength();//得到密碼長度 if (length == 0 || length == undefined) { alert("密碼不能爲空"); $("#OcxPassword").focus(); return false; } if (pgeditor.pwdValid() == 1) {//判斷密碼是否匹配正則表達式二 alert("密碼不符合要求"); $("#OcxPassword").focus(); return false; } $.ajax({ url: "SrandNum.aspx", type: "GET", async: false, cache: false, success: function (srand_num) { pgeditor.pwdSetSk(srand_num);//給控件設置隨機因子 } }); var pwdResult = pgeditor.pwdResult();//獲取密碼AES密文 var machineNetwork = pgeditor.machineNetwork();//獲取網卡信息密文 var machineDisk = pgeditor.machineDisk();//獲取硬盤信息密文 var machineCPU = pgeditor.machineCPU();//獲取CPU信息密文 $("#<%=txtLoginPwd.ClientID %>").val(pwdResult);//將密碼密文賦值給表單 $("#<%=hidMachineNetwork.ClientID %>").val(machineNetwork);//將網卡和MAC信息密文賦值給表單
5.標籤編程
<table> <tr> <td> <script type="text/javascript"> pgeditor.generate(); </script> </td> <td> <div> <span class="Item02"></span> </div> </td> </tr> </table>
後端部分windows
首先須要引入文件: Interop.CPassguardLib.dll 後端
注: Interop 引入面向託管代碼,相似與靜態類 不用在實際編程中引入命名空間,網站直接引用其dll能夠直接使用服務器
//首先在頁面加載中 Page_Load 的時候加載 密碼控件 賦值 哈希函數,賦值 隨機因子 CPassguardLib.CPassguard Pgtest = new CPassguardLib.CPassguard(); hidSKey.Value = Pgtest.Get_RandHex(); hidEnStr.Value = Pgtest.Get_AesEncrypt(hidSKey.Value, hidSKey.Value); //獲取用戶輸入密碼時獲取隨機因子等信息 由dll解析 得到原始密碼 string loginPwd = ""; string mac = ""; string mcryptKey = ""; try { mcryptKey = StringUtils.NotNullStr(Session["mcryptKey"]); //隨機因子 Session.Remove("mcryptKey"); CPassguardLib.CPassguard Pgtest = new CPassguardLib.CPassguard(); loginPwd = Pgtest.Get_AesDecrypt(mcryptKey, password);//調用解密接口.得到密碼明文。 mac = Pgtest.Get_AesDecrypt(mcryptKey, machineNetwork);//調用解密接口.得到密碼明文。 } catch (Exception ex) { log.Warn("warm:" + ex.Message + ",password【" + password + "】,machineNetwork【" + machineNetwork + "】,mcryptKey【" + mcryptKey + "】"); this.ShowClientAlert("登陸異常"); return; }
特別注意:密碼控件前端部分經過隨機因子等參數參數傳遞參數加密,不只如此前端提交時默認該方法爲最終提交方式,也就是若是調用了密碼控件的JS操做方法後再去執行其餘函數提交可能會失敗!~,但不必定是所有控件都會如此,謹以此例供你們參考.