JS实现AES加密并与PHP互通的方法分析

 更新时间:2017年04月19日 11:36:26   作者:momo_mutou  
这篇文章主要介绍了JS实现AES加密并与PHP互通的方法,结合实例形式分析了javascript与php的加密、解密算法相关操作技巧,需要的朋友可以参考下

本文实例讲述了JS实现AES加密并与PHP互通的方法。分享给大家供大家参考,具体如下:

有关数据加密解密问题,有很多钟加密方式;

这里我讲述下js和php实现AES互通

js加密:

首先引入这几个js文件

本站下载地址

<script type="text/JavaScript" src="/CryptoJS/aes.js"></script>
<script type="text/javascript" src="/CryptoJS/pad-zeropadding.js"></script>
<script type="text/javascript">
var data="test";//加密字符串
var key = CryptoJS.enc.Latin1.parse('@12345678912345!');//密钥
var iv = CryptoJS.enc.Latin1.parse('@12345678912345!');//与密钥保持一致
//加密
var data = JSON.stringify(data);//将数据对象转换为json字符串
var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
encrypted=encodeURIComponent(encrypted);
document.write(decrypted);//输出加密后的字符串
//解密
var data="加密的字符串";
//key和iv和加密的时候一致
 var decrypted = CryptoJS.AES.decrypt(data,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});
 decrypted=decrypted.toString(CryptoJS.enc.Utf8);
 document.write(decrypted);//输出解密后的数据
</script>

注意:在实际用的时候和php传输中,js加密后的字符串里面的+被浏览器解析成了空格  然后php解密的时候出错;这里可以对加密之后的字符串做进一步处理encrypted=encodeURIComponent(encrypted);就没有这个问题了

PHP的加密解密方法:

$privateKey="@12345678912345!";
$iv="@12345678912345!";
//加密
$encrypted=mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$privateKey,$data,MCRYPT_MODE_CBC,$iv);
echo base64_encode($encrypted);
//解密
$encryptedData=base64_decode($data);
$decrypted=mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$privateKey,$encryptedData,MCRYPT_MODE_CBC,$iv);
$decrypted=rtrim($decrypted,"\0");//注意!解密出来的数据后面会出现六个红点;这句代码可以处理掉,从而不影响进一步的数据操作
return $decrypted;

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

BASE64编码解码工具:
http://tools.jb51.net/transcoding/base64

密码安全性在线检测:
http://tools.jb51.net/password/my_password_safe

高强度密码生成器:
http://tools.jb51.net/password/CreateStrongPassword

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于JavaScript相关内容可查看本站专题:《JavaScript加密解密技巧汇总》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • js回溯法计算最佳旅行线路代码实例

    js回溯法计算最佳旅行线路代码实例

    这篇文章主要介绍了js回溯法计算最佳旅行线路代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Three.js使用OrbitControls后修改相机旋转方向无效解决办法

    Three.js使用OrbitControls后修改相机旋转方向无效解决办法

    three.js是用javascript写的基于webGL的第三方3D库,下面这篇文章主要给大家介绍了关于Three.js使用OrbitControls后修改相机旋转方向无效的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • JS倒计时代码汇总

    JS倒计时代码汇总

    这篇文章主要介绍了JS倒计时代码,实例汇总了几种常见的倒计时代码,适用于不同的应用场合,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • JavaScript SHA-256加密算法详细代码

    JavaScript SHA-256加密算法详细代码

    这篇文章主要为大家详细介绍了JavaScript SHA-256加密算法代码,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-10-10
  • 微信小程序实现MUI数字输入框效果

    微信小程序实现MUI数字输入框效果

    这篇文章主要为大家详细介绍了微信小程序实现MUI数字输入框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • filters.revealTrans.Transition使用方法小结

    filters.revealTrans.Transition使用方法小结

    有看到幻灯片调用会用到divid.filters.revealTrans.Transition=Math.floor(Math.random()*23)和divid.filters.revealTrans.apply(),那么这两个都是什么意思呢?
    2010-08-08
  • 实例详解JavaScript静态作用域和动态作用域

    实例详解JavaScript静态作用域和动态作用域

    作用域是指程序源代码中定义变量的区域,作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限,这篇文章主要给大家介绍了关于JavaScript静态作用域和动态作用域的相关资料,需要的朋友可以参考下
    2021-10-10
  • 早该知道的7个JavaScript技巧

    早该知道的7个JavaScript技巧

    这篇文章对js编写等方便详细的说明了几个技巧,方便大家提高效率,学习简易化书写代码
    2013-03-03
  • 使用Javascript在HTML中显示实时时间

    使用Javascript在HTML中显示实时时间

    这篇文章主要为大家详细介绍了使用Javascript在HTML中显示实时时间,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • js中自定义方法实现停留几秒sleep

    js中自定义方法实现停留几秒sleep

    js中不存在自带的sleep方法,要想休眠要自己定义个方法,需要的朋友可以参考下
    2014-07-07

最新评论