为什么80%的码农都做不了架构师?>>>   

加密锁中有:
唯一硬件ID:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
MD5:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
数据库中用户表中增加两个字段:
唯一硬件ID:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
MD5:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
硬件ID是唯一的,因此一个用户对应一个加密锁。
实现原理:
首先是加密锁登陆密码认证(加密锁是有密码的),加密锁登陆密码认证成功,读取加密锁中的唯一硬件ID,通过产生的随机数调用加密锁接口得到客户端信息摘 要(随机数和MD5进行MD5运算),将硬件ID、客户端摘要、随机数一同发送至服务器端, 服务器端根据硬件ID到数据库中找到对应的MD5,同时服务 器端用传递过来的随机数和MD5进行MD5运算,得到服务器端信息摘要,用客户端传递过来的信息摘要和服务器端的信息摘要比较,相同则认证成功!
客户端代码:
<script language="javascript" type="text/javascript">
   function dcLogin(){
      var form=document.forms("login");
      var Digest="0123456789ABCDE";
      var rtn;
      var sNTPWD=form.edtntupin.value;
      if(sNTPWD==""){
         alert("登录密码不能为空!");
         return false;
      }
     
      //查找NT锁
      rtn=NT120Client.NTFind();
      if(rtn!=0){
         alert("没有找到加密锁!");
         return false;
      }
  
      //打开NT锁
      rtn=NT120Client.NTLogin(sNTPWD)
      if(rtn!=0){
         alert("登录密码出错!");//65代表错误重试次数超过3次
         return false;
      }
      //获取NTHardwareID
      var NTHardwareID = "0123456789ABCD";
      NTHardwareID = NT120Client.NTGetHardwareID();
      if(NTHardwareID==""){
         alert("获取硬件序列号失败!");
         return false;
      }
      //进行硬件MD5运算
      try{
         Digest=NT120Client.NTMD5("<%=(String)session.getAttribute("RandomData")%>");
      }catch(ex){
         alert("MD5错误");
         return false;
      }
      form.digest.value=Digest;
      form.hardwareID.value=NTHardwareID;
      form.submit();
   }
</script>
/**
    * 用户认证
    */
public String dcLogin(){
      HttpServletRequest request = ServletActionContext.getRequest ();
      String RandomStr = (String)request.getSession().getAttribute("RandomData");//获取随机随机数
      String cDigest = request.getParameter("digest");//客户端MD5密钥
      String sDigest = "";//服务器MD5密钥
      String ntID = request.getParameter("hardwareID");//获取硬件ID
 
      try{
         //根据ntID得到用户信息(包括MD5值)
         UserModel user = userService.getNTIDByMd5(ntID);
         if(user != null){
            //进行MD5运算
            String msg = (RandomStr+user.getUserKey());
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(msg.getBytes("UTF-8"));
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for(int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if(i<0) i+= 256;
                if(i<16)
                buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            sDigest = buf.toString();
            //进行MD5密钥比较,给出相应的服务
            if (sDigest.equals(cDigest)){
                StaticConstant.USER_TYPE = 1;
                log.info("DataCenter User OK!");
                request.getSession().setAttribute("user",user);
            }else{
                message = "用户认证失败,请联系研发人员!";
                return INPUT;
            }
         }else{
            message = "用户认证失败,没有对应的用户信息!";
            return INPUT;
         }
      }catch(Exception ex){
         ex.printStackTrace();
      }
      return SUCCESS;
   }

转载于:https://my.oschina.net/cccyb/blog/1526939

web登录应用加密狗相关推荐

  1. 使用Java模拟Web端的POST或GET请求,实现自动化操作:加密狗烧制技术详解

    简介 硬件锁(加密狗)加密软件.与金雅特公司合作的方式是:买家公司开发一个授权程序(这里公司的授权程序:Encrypt类的encrypt()方法),进行授权管理用户锁. 注意:LZ只演示模拟Web端的 ...

  2. .Net中Web增加加密狗管理

    由于业务中最近需要使用到加密狗,增加对Web代码的管控,所以需要进行加密狗使用的研究 首先,对于没有接触使用过加密狗的人需要有个大致的认识,加密狗分为 MasterDog, 1.下载加密狗的开发套件, ...

  3. web登录用户名密码加密

    阿里云低价服务器1折特惠,优惠爽翻天,点我立即低价购买 之前一直没关注过web应用登录密码加密的问题,这两天用appscan扫描应用,最严重的问题就是这个了,提示我明文发送密码.这个的确很不安全,以前 ...

  4. 帆软加密狗注册配置安装步骤

    第一步:建立远程连接,输入IP地址和用户名,密码.(可以不用) 1*********46    admin*****     h****4 第二步: JDK1.6的安装和环境变量的配置 1,右击我的电 ...

  5. Web登录很简单?开玩笑!

    以下文章来源方志朋的博客,回复"666"获面试宝典 本文通过 Web 登录的例子探讨安全问题,登录不仅仅是简单地表达提交和记录写入,其安全问题才是重中之重. 1. 一个简单的HTM ...

  6. php开发的程序怎么用加密狗加密,C# 简单的程序绑定、加密(类似加密狗)

    [实例简介]类似加密狗的简单功能实现.使软件只能在当前电脑上使用,更换电脑后无法使用,更改系统时间也无效. [实例截图] [核心代码] using System; using System.Colle ...

  7. python 录制web视频_Python django框架 web端视频加密的实例详解

    视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play ...

  8. tplink连接服务器失败_管家婆财贸双全连接失败,服务器端没有找到加密狗

    管家婆财贸双全连接失败,服务器端没有找到加密狗 管家婆财贸双全找不到狗判断步骤 1.先判断电脑能否识别管家婆财贸双全加密狗我的电脑--右键--属性--硬件--设备管理器--通用串行总线控制器(或人体学 ...

  9. 关于使用U盘制作简单windows开机加密狗

    今天因为客户提到了,为定制产品设置加密狗,增强其安全防护性. 经过在网上查询资料,找到了几篇相同类容的文章,经过自己亲手实验,发现了参考文章中不足,经过总结,写成本文. 1.首先,在需要设置开机加密狗 ...

最新文章

  1. javascript的知识总结
  2. linux dev controlC0,关于Linux的alsa音频问题解决
  3. vue Element-ui 表格自带筛选框自定义高度
  4. 疫情之下的求职姿势:视频面试,电话面试这样做,你就已经赢一半了!
  5. java的BASE64Encoder,BASE64Decoder加密与解密
  6. Microsoft Team Foundation Server 2010安装指南
  7. springboot项目发布JAR包
  8. 两种DIV水平居中的方法
  9. 电话号码正则表达式 (包含电话号码 和 手机号码)
  10. 软件设计师-数据库( 分布式)
  11. 吐血整理的几十款小程序登陆界面【附完整代码】
  12. 小米id锁状态查询_怎么通过序列号查询苹果手机真伪
  13. 微信小程序Demo大全
  14. 多元函数的泰勒展开公式
  15. 今日锋评:愚人节的秘密
  16. 如何在GitHub上建立一个自己的网站
  17. Mac 本地下载安装Nginx
  18. 全球及中国多普勒导航仪行业投资分析及前景预测报告2022-2028年
  19. [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)
  20. android 退出app代码_PPT 下载 | APP 埋点那些事

热门文章

  1. VHDL——4位移位寄存器
  2. 激光雷达:汽车智能化的最新“标签”
  3. SpringBoot微架构-李兴华-专题视频课程
  4. 丁向荣单片机pdf_单片机原理与应用(C语言版)——基于STC15W201S系列单片机 丁向荣 纺著 9787121246357...
  5. xp下报错“不是有效的win32应用程序”
  6. centos7装linux翻译软件
  7. 如何有效实现软件的需求管理 - 6
  8. EggDrop Problem(扔鸡蛋问题)
  9. 求长方形的面积和周长(Java)
  10. 惊喜!做嵌入式UI还能用javascript