两种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中void(0)的具体含义解释
Feb 27 Javascript
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
javascript 树控件 比较好用
Jun 11 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
jQuery中:file选择器用法实例
Jan 04 Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
JavaScript实现多栏目切换效果
Dec 12 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
Vue使用zTree插件封装树组件操作示例
Apr 25 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 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
header导出Excel应用示例
2014/01/24 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
JavaScript 创建对象
2009/07/17 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
js实现时间日期校验
2020/05/26 Javascript
Python httplib模块使用实例
2015/04/11 Python
python实现简单的socket server实例
2015/04/29 Python
Python之reload流程实例代码解析
2018/01/29 Python
python实现定时发送qq消息
2019/01/18 Python
pycharm快捷键汇总
2020/02/14 Python
python 绘制国旗的示例
2020/09/27 Python
pytorch简介
2020/11/11 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
打架检讨书800字
2014/01/10 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
员工团队活动方案
2014/08/28 职场文书
男方婚前保证书
2015/02/28 职场文书
同学聚会祝酒词
2015/08/10 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
mysql中整数数据类型tinyint详解
2021/12/06 MySQL