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

  • 相关阅读:
    Visitor Pattern (Visitor设计模式)
    JS DatePicker: jscalendar1.0___v1.51 (JS日期选择器)
    转:Mediator模式
    转: Debug with IIS Express
    101 LINQ Samples
    关于进程与线程:About Processes and Threads
    转:PureMVC示例 CafeTownsend
    Haskell Editor:Leksah & EclipseFP The Haskell plugin for Eclipse
    Haskell、C#、Java、C 程序执行效率比较 :Write your first parallel Haskell program
    SCJP: java exerciese 1
  • 原文地址:https://www.cnblogs.com/2881064178dinfeng/p/6979509.html
Copyright © 2011-2022 走看看