两种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 实用小技巧
Apr 07 Javascript
JS判断数组中是否有重复值得三种实用方法
Aug 16 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
jquery实现可关闭的倒计时广告特效代码
Sep 02 Javascript
JavaScript重载函数实例剖析
May 13 Javascript
基于jQuery实现顶部导航栏功能
Dec 27 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
vue2.0 路由不显示router-view的解决方法
Mar 06 Javascript
JS实现图片转换成base64的各种应用场景实例分析
Jun 22 Javascript
微信小程序实现拨打电话功能的示例代码
Jun 28 Javascript
JS绘图Flot如何实现动态可刷新曲线图
Oct 16 Javascript
JavaScript的function函数详细介绍
Nov 20 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+mysql查询优化简单实例
2015/01/13 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
JS实现轮播图效果
2020/01/11 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
python采集百度百科的方法
2015/06/05 Python
tensorflow获取变量维度信息
2018/03/10 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
python实现名片管理系统项目
2019/04/26 Python
django 微信网页授权登陆的实现
2019/07/30 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
一名毕业生的自我鉴定
2013/12/04 职场文书
总经理任命书
2014/03/29 职场文书
员工生日活动方案
2014/08/24 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android