两种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 相关文章推荐
JQuery 学习笔记 选择器之六
Jul 23 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
Jan 23 Javascript
javascript小数四舍五入多种方法实现
Dec 23 Javascript
jQuery实现点击标题输入详细信息
Apr 16 Javascript
使用js判断控件是否获得焦点
Jan 03 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
Aug 16 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
May 12 Javascript
微信小程序页面开发注意事项整理
May 18 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
May 03 Javascript
vue通过数据过滤实现表格合并
Nov 30 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的ajax框架xajax入门与试用介绍
2010/12/19 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
Python getopt模块处理命令行选项实例
2014/05/13 Python
Python字典操作简明总结
2015/04/13 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
pytorch数据预处理错误的解决
2020/02/20 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
群众路线教育党课主持词
2014/04/01 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
应届生自荐书
2014/06/23 职场文书
师德师风剖析材料
2014/09/30 职场文书
创业计划书之校园超市
2019/09/12 职场文书
python实现简单的名片管理系统
2021/04/26 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python