web登录应用加密狗
为什么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登录应用加密狗相关推荐
- 使用Java模拟Web端的POST或GET请求,实现自动化操作:加密狗烧制技术详解
简介 硬件锁(加密狗)加密软件.与金雅特公司合作的方式是:买家公司开发一个授权程序(这里公司的授权程序:Encrypt类的encrypt()方法),进行授权管理用户锁. 注意:LZ只演示模拟Web端的 ...
- .Net中Web增加加密狗管理
由于业务中最近需要使用到加密狗,增加对Web代码的管控,所以需要进行加密狗使用的研究 首先,对于没有接触使用过加密狗的人需要有个大致的认识,加密狗分为 MasterDog, 1.下载加密狗的开发套件, ...
- web登录用户名密码加密
阿里云低价服务器1折特惠,优惠爽翻天,点我立即低价购买 之前一直没关注过web应用登录密码加密的问题,这两天用appscan扫描应用,最严重的问题就是这个了,提示我明文发送密码.这个的确很不安全,以前 ...
- 帆软加密狗注册配置安装步骤
第一步:建立远程连接,输入IP地址和用户名,密码.(可以不用) 1*********46 admin***** h****4 第二步: JDK1.6的安装和环境变量的配置 1,右击我的电 ...
- Web登录很简单?开玩笑!
以下文章来源方志朋的博客,回复"666"获面试宝典 本文通过 Web 登录的例子探讨安全问题,登录不仅仅是简单地表达提交和记录写入,其安全问题才是重中之重. 1. 一个简单的HTM ...
- php开发的程序怎么用加密狗加密,C# 简单的程序绑定、加密(类似加密狗)
[实例简介]类似加密狗的简单功能实现.使软件只能在当前电脑上使用,更换电脑后无法使用,更改系统时间也无效. [实例截图] [核心代码] using System; using System.Colle ...
- python 录制web视频_Python django框架 web端视频加密的实例详解
视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play ...
- tplink连接服务器失败_管家婆财贸双全连接失败,服务器端没有找到加密狗
管家婆财贸双全连接失败,服务器端没有找到加密狗 管家婆财贸双全找不到狗判断步骤 1.先判断电脑能否识别管家婆财贸双全加密狗我的电脑--右键--属性--硬件--设备管理器--通用串行总线控制器(或人体学 ...
- 关于使用U盘制作简单windows开机加密狗
今天因为客户提到了,为定制产品设置加密狗,增强其安全防护性. 经过在网上查询资料,找到了几篇相同类容的文章,经过自己亲手实验,发现了参考文章中不足,经过总结,写成本文. 1.首先,在需要设置开机加密狗 ...
最新文章
- javascript的知识总结
- linux dev controlC0,关于Linux的alsa音频问题解决
- vue Element-ui 表格自带筛选框自定义高度
- 疫情之下的求职姿势:视频面试,电话面试这样做,你就已经赢一半了!
- java的BASE64Encoder,BASE64Decoder加密与解密
- Microsoft Team Foundation Server 2010安装指南
- springboot项目发布JAR包
- 两种DIV水平居中的方法
- 电话号码正则表达式 (包含电话号码 和 手机号码)
- 软件设计师-数据库( 分布式)
- 吐血整理的几十款小程序登陆界面【附完整代码】
- 小米id锁状态查询_怎么通过序列号查询苹果手机真伪
- 微信小程序Demo大全
- 多元函数的泰勒展开公式
- 今日锋评:愚人节的秘密
- 如何在GitHub上建立一个自己的网站
- Mac 本地下载安装Nginx
- 全球及中国多普勒导航仪行业投资分析及前景预测报告2022-2028年
- [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)
- android 退出app代码_PPT 下载 | APP 埋点那些事
热门文章
- VHDL——4位移位寄存器
- 激光雷达:汽车智能化的最新“标签”
- SpringBoot微架构-李兴华-专题视频课程
- 丁向荣单片机pdf_单片机原理与应用(C语言版)——基于STC15W201S系列单片机 丁向荣 纺著 9787121246357...
- xp下报错“不是有效的win32应用程序”
- centos7装linux翻译软件
- 如何有效实现软件的需求管理 - 6
- EggDrop Problem(扔鸡蛋问题)
- 求长方形的面积和周长(Java)
- 惊喜!做嵌入式UI还能用javascript