两种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框架的AJAX实例代码
Nov 03 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
Dec 14 Javascript
javascript实现的固定位置悬浮窗口实例
Apr 30 Javascript
浅谈使用MVC模式进行JavaScript程序开发
Nov 10 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
小程序指纹验证的实现代码
Dec 04 Javascript
echarts大屏字体自适应的方法步骤
Jul 12 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 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中include文件变量作用域
2015/06/18 PHP
PHP的PDO连接讲解
2019/01/24 PHP
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
赔偿协议书范本
2014/04/15 职场文书
活动策划求职信模板
2014/04/21 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
龙猫观后感
2015/06/09 职场文书
公司管理制度范本
2015/08/03 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js