两种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 相关文章推荐
ie focus bug 解决方法
Sep 03 Javascript
javascript中的正则表达式使用详解
Aug 30 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
Nov 09 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
Vue2.0 实现移动端图片上传功能
May 30 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 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网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
javaScript基础详解
2017/01/19 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python基础教程之缩进介绍
2014/08/29 Python
Python 26进制计算实现方法
2015/05/28 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Django中的ajax请求
2018/10/19 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Python通过len函数返回对象长度
2020/10/22 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
学习雷锋精神心得体会范文
2014/03/12 职场文书
汽车广告策划方案
2014/05/31 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
装配出错检讨书
2014/09/23 职场文书
奖学金主要事迹范文
2015/11/04 职场文书