两种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 相关文章推荐
JS随即打乱数组实现代码
Dec 03 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
Dec 09 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
微信小程序movable view移动图片和双指缩放实例代码
Aug 08 Javascript
js实现前面自动补全位数的方法
Oct 10 Javascript
react 兄弟组件如何调用对方的方法示例
Oct 23 Javascript
详解Vue.directive 自定义指令
Mar 27 Javascript
Vue infinite update loop的问题解决
Apr 23 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文件夹的创建与删除方法
2015/01/24 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
Python中的高级函数map/reduce使用实例
2015/04/13 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
Python实现播放和录制声音的功能
2020/08/12 Python
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
EJB的角色和三个对象
2015/12/31 面试题
个人授权委托书
2014/04/03 职场文书
小班上学期评语
2014/05/05 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
六年级作文之预言作文
2019/10/25 职场文书
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏