运行环境

  • win服务器 系统server2008R2
  • C# ASP.NET服务器页面

前端部分

     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.隐藏域

//隐藏域存储三部分 密码key, 随机因子, 网卡等设备信息
<asp:HiddenField runat="server" ID="hidSKey" />
<asp:HiddenField runat="server" ID="hidEnStr" />
<asp:HiddenField runat="server" ID="hidMachineNetwork" />

  3.初始化

//初始化密码控件  由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>

后端部分

  首先需要引入文件: 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操作方法后再去执行其他函数提交可能会失败!~,但不一定是全部控件都会如此,谨以此例供大家参考.

PassGuard密码控件配置的更多相关文章

  1. echart图表控件配置入门(二)常用图表数据动态绑定

    上一节 <echart图表控件配置入门(一)>介绍了echarts图表控件的入门配置,使开发人员可以快速搭建出一个静态的图表.但是在实际开发过程这还是不够的,不可能所有的图表控件都是静态数 ...

  2. echart图表控件配置入门(一)

    现在主流的web图表控件主要有hightchart.fusionchart.echart: echart作为百度前端部门近期推出的一个基于html5的免费图表控件,以其丰富图表类型和良好的兼容性速度得 ...

  3. H5端密码控件自动化测试

    最近在做H5端UI自动化测试,其中遇到了一个棘手问题就是密码控件,因为密码控件的按钮每次都是随机不一样的,没法固定去点击输入密码.密码的输入框是div不是input,所以没法用send_keys()这 ...

  4. 使用WinIo32绕过密码控件实现自动登录

    通过winIO32绕过密码控件,实现自动登录 环境: vmware上安装windows 32位系统:windows xp / windows 7 selenium版本: 3.11.0 IEDriver ...

  5. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

  6. ASP.NET#LinqDataSource控件配置对象模型时遇到的问题

    使用LinqDataSource控件时,配置数据源的时候,发现没有DataContext对象可选,但已通过可视化操作完成了对象模型的建立.这个时候,可以通过现在Default.aspx.cs文件中做如 ...

  7. My97DatePicker日历控件配置

    一. 简介 1. 简介 目前的版本是:4.72 2. 注意事项 My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名 My97DatePicker. ...

  8. selenium登录网银,密码控件输入

    尝试登录农行网银,发现带控件的密码输入框怎么都无法输入啊 最后用虚拟键盘实现的  , DD模拟键盘 http://www.ddxoft.com/ 图形验证码识别没过,有时间再继续 需要安装  Tess ...

  9. AspNetPager分页控件配置

    AspNetPager是asp.net中常用的分页控件,下载AspNetPager.dll,添加引用,在工具栏就可以看到AspNetPager控件: 拖过来之后,设置如下属性: <webdiye ...

随机推荐

  1. Anaconda入门教程【快速掌握】

    Anaconda 使用指南 概述 很多学习python的初学者甚至学了有一段时间的人接触到anaconda或者其他虚拟环境工具时觉得无从下手, 其主要原因就是不明白这些工具究竟有什么用, 是用来做什么 ...

  2. 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生

    在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求.因为这样最简单. 其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监 ...

  3. FusionInsight大数据开发--HBase应用开发

    HBase应用开发 HBase的定义 HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统. 适合于存储大表数据,可以达到实时级别. 利用Hadoop HDFS 作为其文件存储系统,提供实时 ...

  4. 如何当上Leader和六千个bug的系统

    在昨天的读书会上我分享了我是如何当上leader以及当上leader之后的体会.然后今天Sophie总结了我的发言,大家对此有些反馈.我根据大家的反馈写了这篇文章,主要针对几点: 大家如何当上lead ...

  5. 转 tty 设备读写

    转自https://feng-qi.github.io/2017/05/04/how-to-read-write-to-tty-device/ <p>这是 StackExchange 上的 ...

  6. VS工具箱不显示DEV控件解决方法

    VS工具箱中不显示DEV控件解决方法 之前先装vs,再装dev控件,vs工具栏中自动会加载并显示dev相关组件,但是,在更新vs(我用2017版)后,原先安装好的dev控件库不显示在vs的工具栏中了. ...

  7. 三元運算子回傳lambda expression

    紀錄一下 假如我想要透過三元運算子?: 傳回lambda expression 要明確轉型

  8. 动手动脑,第六次Tutorial——数组和随机数数组输出及求和

    作业课后作业1 阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘. 首先,定义string类型的二维数组,它和类的数组不一样,类的数组分配了空间后不能直接for循环赋值,st ...

  9. MySql常用操作【基础且详细(●'◡'●)】

    有那么挺长段时间没有敲代码了,今敲起来竟然有些sql都想不起来了

  10. 【原】通过Spring结合Cglib处理非接口代理

    前言: 之前做的一个项目,虽然是查询ES,但内部有大量的逻辑计算,非常耗时,而且经常收到JVM峰值告警邮件.分析了一下基础数据每天凌晨更新一次,但查询和计算其实在第一次之后就可以写入缓存,这样后面直接 ...