两种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中eval函数的使用方法与示例
Apr 09 Javascript
JQuery 弹出框定位实现方法
Dec 02 Javascript
js克隆对象、数组的常用方法介绍
Sep 26 Javascript
浅析JavaScript中两种类型的全局对象/函数
Dec 05 Javascript
jquery制作居中遮罩层效果分享
Feb 21 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
vue的Virtual Dom实现snabbdom解密
May 03 Javascript
Vue 获取数组键名的方法
Jun 21 Javascript
js实现跟随鼠标移动的小球
Aug 26 Javascript
vue组件创建的三种方式小结
Feb 03 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中header和session_start前不能有输出原因分析
2013/01/11 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
js获取url传值的方法
2015/12/18 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
详解vue 组件注册
2020/11/20 Vue.js
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
Python 实现数组相减示例
2019/12/27 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
幼儿园教师教育感言
2014/02/28 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
代理人委托书
2014/08/01 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
python实现调用摄像头并拍照发邮箱
2021/04/27 Python