两种JavaScript的AES加密方式(可与Java相互加解密)


Posted in Javascript onAugust 02, 2016

由于JavaScript属于弱类型脚本语言,因此当其与强类型的后台语言进行数据交互时会产生各种问题,特别是加解密的操作。本人由于工作中遇到用js与Java进行相互加解密的问题,在网上查了很多资料及代码段,均无法解决。后总结多篇文档内容终于找到解决办法,现记录与此:

下面给大家介绍两种JavaScript的AES加密方式,具体详情如下所示:

第一种:加解密时需要秘钥(key)和秘钥偏移量(iv)的情况,在线验证地址:http://www.seacha.com/tools/aes.html

//该方法可与Java进行相互加解密<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>需要秘钥(key)及秘钥偏移量(iv)的aes加解密</title>
</head>
<body>
<script src="aes_1.js"></script>//引入的js文件在该链接中:https://github.com/hellobajie/AES-of-JavaScript
<script>
var key = CryptoJS.enc.Utf8.parse("十六位十六进制数作为秘钥"); 
var iv = CryptoJS.enc.Utf8.parse('十六位十六进制数作为秘钥偏移量'); 
function Encrypt(word){
srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
return encrypted.ciphertext.toString().toUpperCase();
}
function Decrypt(word){ 
var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); 
return decryptedStr.toString();
}
var mm = Encrypt('nihao')
console.log(mm);
var jm = Decrypt(mm);
console.log(jm)
</script>
</body>
</html>//如果想要深度了解每步作用,可以参考:http://zhidao.baidu.com/question/647688575019014285.html?qbl=relate_question_0&word=javascript%20aes

第二种:加解密时仅需要秘钥,在线验证地址:http://encode.chahuo.com/

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>加解密时仅需要秘钥</title>
</head>
<body>
<script src="aes_2.js"></script>//引入的js文件在该链接中:https://github.com/hellobajie/AES-of-JavaScript
<script type="text/javascript">
var pwd="秘钥";
function Encrypt(word){
return CryptoJS.AES.encrypt(word,pwd).toString();
}
function Decrypt(word){
return CryptoJS.AES.decrypt(word,pwd).toString(CryptoJS.enc.Utf8);
}
var mm = Encrypt('nihao');
console.log(mm)
var jm = Decrypt(mm);
console.log(jm)
</script>
</body>
</html>

以上所述是小编给大家介绍的两种JavaScript的AES加密方式(可与Java相互加解密),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
国外的为初学者写的JavaScript教程
Jun 09 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
Jan 09 Javascript
javascript unicode与GBK2312(中文)编码转换方法
Nov 14 Javascript
JavaScript和CSS交互的方法汇总
Dec 02 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
JS作为值的函数用法示例
Jun 20 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
JS实现简单贪吃蛇小游戏
Oct 28 Javascript
深入浅析search 搜索框的写法
Aug 02 #Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 #Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 #Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 #Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 #Javascript
AngularJS基础 ng-keydown 指令简单示例
Aug 02 #Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 #Javascript
You might like
PHP写杨辉三角实例代码
2011/07/17 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
php写的AES加密解密类分享
2014/06/20 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
python实现360的字符显示界面
2014/02/21 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
婚礼新郎父母答谢词
2014/01/16 职场文书
政府采购方案
2014/06/12 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
第一节英语课开场白
2015/06/01 职场文书
《落花生》教学反思
2016/02/16 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers