PassGuard密碼控件配置

運行環境javascript

  • win服務器 系統server2008R2
  • C# ASP.NET服務器頁面

前端部分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操做方法後再去執行其餘函數提交可能會失敗!~,但不必定是所有控件都會如此,謹以此例供你們參考.

相關文章
相關標籤/搜索