java 和 javascript CryptoJS 进行HmacSHA1加密
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException; import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec; /**
*
* HmacSHA1加密类
*
*/
public class SHA1 { public static String getHmacSHA1(String password,String loginname, String algorithm){
byte[] keyBytes = password.getBytes();
Key key = new SecretKeySpec(keyBytes, 0, keyBytes.length, algorithm);
Mac mac=null;
try {
mac = Mac.getInstance(algorithm);
mac.init(key);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (InvalidKeyException e) {
e.printStackTrace();
}
return byteArrayToHex(mac.doFinal(loginname.getBytes()));
} /**
* 16进制加密
* @param a
* @return
*/
protected static String byteArrayToHex(byte [] a) {
int hn, ln, cx;
String hexDigitChars = "0123456789abcdef";
StringBuffer buf = new StringBuffer(a.length * 2);
for(cx = 0; cx < a.length; cx++) {
hn = ((int)(a[cx]) & 0x00ff) /16 ;
ln = ((int)(a[cx]) & 0x000f);
buf.append(hexDigitChars.charAt(hn));
buf.append(hexDigitChars.charAt(ln));
}
return buf.toString(); } public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException, IOException { String loginKey= getHmacSHA1("密码", "用户名", "HmacSHA1");
System.out.println(loginKey);//53b3a8413cf49e939d8711a0ba34916b2ec2db75
String loginKey2= getHmacSHA1("123456", "admin", "HmacSHA1");
System.out.println(loginKey2);//3c39afa93e0b12c28f1f08b18488ebd4ad2e5858 }
}
html+JavaScript代码:
<html>
<head>
<script src="./hmac-sha1.js"></script>
<script type="text/javascript">
function genkey() {
var userName=document.getElementById("userName").value;
var password=document.getElementById("password").value;
var hash = CryptoJS.HmacSHA1(userName, password);
document.getElementById("key").value=hash;
};
</script>
</head> <body>
用户名:<input id="userName" value="" type="text">
密码:<input id="password" value="" type="text"><br>
40位字符key:<input id="key" value="" type="text" style="width:400px"><br>
<input id="genKey" value="生成key" type="button" onclick="genkey()"> </body>
</html>
java 以及 js ,html 源码下载: 链接:http://pan.baidu.com/s/1c0pTIes 密码:j77s
值得注意的是: 前台页面通过js加密后,直接进行ajax请求时会出现 ajax无法执行,原因无非是参数不对,这是 要把加密厚的 key放在一个隐藏域中(变成了字符串,而非对象)然后再取出
<input type="hidden" id="key" >
var key= CryptoJS.HmacSHA1(companyAccount, password);
$("#key").val(key);
$.ajax({
url:urlStr,
data:{
"password": $("#key").val(),
},
java 和 javascript CryptoJS 进行HmacSHA1加密的更多相关文章
- Java执行JavaScript脚本破解encodeInp()加密
一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 1.我们首先需要获得该JS加密函数,一般如下: conwork.js var keyStr = " ...
- nodejs中使用crypto-js先HmacSha1加密后转Base64
1. 先HmacSha1后Base64 var HmacSha1 = require('crypto-js/hmac-sha1') ;var Base64 = require('crypto-js/e ...
- nodejs与javascript中的aes加密
简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.高级加密标准已然成为对称密钥加 ...
- 关于CryptoJS中md5加密以及aes加密的随笔
最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...
- paip.java 以及JavaScript (js) 的关系以及区别
paip.java 以及JavaScript (js) 的关系以及区别 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
- WebView上实现Java与JavaScript交互
在安卓开发上,考虑到开发效率和界面更新,有时使用WebView结合web页面技术,可以快速迭代地开发移动应用.WebView加载资源的速度并不慢,但是如果资源多了,就很慢.图片.css.js.html ...
- 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类
30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...
- Java 和 Javascript 的 Date 与 .Net 的 DateTime 之间的相互转换
Java 和 Javascript 的 Date 对象内部存放的是从1970年1月1日0点以来的毫秒值. .Net 的 DateTime 对象内部存放的是从0001年1月1日12点以来的tick值,1 ...
- java和javascript真的有关系=。=
相同点:1. 内存管理,两者都采用GC来对内存进行回收.因此Java与javascript的内存泄露情况十分相似. 2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V ...
随机推荐
- CentOS探索之路3---安装python3
安装Python3 总述 一般来说Linux类型的操作系统都会自带安装python,但是系统默认安装的python都是2.x的版本.而现在一般使用的是python3.x版本,相比于python2. ...
- JavaScript窗口打开与关闭及如何使用opener使子窗口对父窗口进行操作
一.打开与关闭窗口 1.打开窗口:可以使用window对象中的Open()方法. newWindow = window.open(url,windowname,location); 参数说明: url ...
- BOM-使用定时器
window对象包含4个定时器专用方法,说明如下表所示,使用它们可以实现代码定时运行,避免连续执行,这样可以设计动画 方法 说明 setInterval() 按照指定的周期,(以毫秒为单位)来调用函数 ...
- THINK PHP 学习笔记20171115
Part1:框架目录project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ├─index 模块目录(可更改) │ │ ├─co ...
- Idea生成Javadoc
Idea tools菜单下:Generate Javadoc...,在弹出的对话框中选择指定的包或文件,也可滤掉指定的包或文件.如果有自定义的javadoc标签,则需要在other command l ...
- 从mysql中dump数据到本地
方法一:使用mysqldump命令,如: mysqldump -h10.90.6.237 -uf_insplat2car_r -P3306 -pxxxxxxxxx nbmp tb_tag_log -- ...
- windows10下mysql8.0.11忘记密码的解决办法
首先输入 新开一个cmd窗口,登录mysql,刷新权限表 FLUSH PRIVILEGES; 经过我再次修改密码测试,只用下面这条语句就可以了 ALTER USER 'root'@'localhost ...
- 用面向对象的编程方式实现飞机大战小游戏,java版
概述 本文将使用java语言以面向对象的编程方式一步一步实现飞机大战这个小游戏 本篇文章仅供参考,如有写的不好的地方或者各位读者哪里没看懂可以在评论区给我留言 或者邮件8274551712@qq.co ...
- PL/SQL Developer 和 Instant Client客户端安装配置
一. 准备工作 1. 点击此下载 PL/SQL Developer 2. 点击此下载 Instant Client 二. 配置Instant Client 1. 新建 %安装目录%\network\ ...
- window平台安装node.js绿色版
1. 下载Windows Binary版本的node.js文件 2. 把下载的ZIP压缩包解压到某个目录下(例如:D:\nodejs) 3. 此时的node.js只在刚刚解压的目录才起作用,需要配置环 ...