zoukankan      html  css  js  c++  java
  • JS实现AES加密并与PHP互通的方法分析

    <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,"");//注意!解密出来的数据后面会出现六个红点;这句代码可以处理掉,从而不影响进一步的数据操作
    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

  • 相关阅读:
    Nginx流量拷贝
    Nginx基于站点目录和文件的URL访问控制
    Nginx禁止ip访问或非法域名访问
    Nginx动静分离
    Nginx隐藏式跳转(浏览器URL跳转后保持不变)
    Harbor镜像仓库(含clair镜像扫描)
    Pod的QoS服务质量等级
    Pod容器应用"优雅发布"
    Pod容器自动伸缩(HPA) 测试
    NFS双机热备高可用环境
  • 原文地址:https://www.cnblogs.com/2881064178dinfeng/p/6979509.html
Copyright © 2011-2022 走看看