两种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中的document.open()方法使用介绍
Oct 09 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
Sep 02 Javascript
浏览器复制插件zeroclipboard使用指南
Mar 26 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
Sep 23 Javascript
JavaScript如何一次性展示几万条数据
Mar 30 Javascript
JavaScript手风琴页面制作
May 17 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
Vue 修改网站图标的方法
Dec 31 Vue.js
深入浅析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遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
详解JS函数重载
2014/12/04 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python中__name__的使用实例
2015/04/14 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python字符串的一些操作方法总结
2019/06/10 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
医生个人年终总结
2015/02/28 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
教师节老师寄语
2015/05/28 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
Elasticsearch 聚合查询和排序
2022/04/19 Python
讲解Python实例练习逆序输出字符串
2022/05/06 Python