JS AES加密与PHP解密

简介: 网页端(在没有https情况下)给密码之类的加密传输,虽然多此一举,也好过直接监控软件就能看到密码思路在传输密码的时候,先向后台获取一个随机码或者验证码,作为秘钥,网页端根据这个秘钥,加密要传输的数据,服务端先验证验证码是否正确,如果验证正确,根据验证码进行数据解密 fox.风PHPclass AesJs{ /**向量 * @

网页端(在没有https情况下)给密码之类的加密传输,虽然多此一举,也好过直接监控软件就能看到密码

思路

在传输密码的时候,先向后台获取一个随机码或者验证码,作为秘钥,网页端根据这个秘钥,加密要传输的数据,服务端先验证验证码是否正确,如果验证正确,根据验证码进行数据解密
fox.风

PHP

class AesJs
{
    /**向量
     * @var string
     */
    private static $iv = "1234567890123412";//16位
    /**
     * 默认秘钥
     */
    const KEY = '1111111111111123';//16位

    public static function init($iv = '')
    {
        self::$iv = $iv;
    }

    /**
     * 加密字符串
     * @param string $data 字符串
     * @param string $key  加密key
     * @return string
     */
    public static function encrypt($data = '', $key = self::KEY)
    {
        $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, self::$iv);
        return base64_encode($encrypted);
    }

    /**
     * 解密字符串
     * @param string $data 字符串
     * @param string $key  加密key
     * @return string
     */
    public static function decrypt($data = '', $key = self::KEY)
    {
        $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, self::$iv);
        return rtrim($decrypted, "\0");
    }
}

//调用
//加密
AesJs::encrypt('要加密的字符串','秘钥');
//解密
AesJs::decrypt('要解密的字符串','秘钥');

JS

下载地址:
1.https://code.google.com/archive/p/crypto-js/downloads
2.https://github.com/brix/crypto-js/tree/release-3.1.2 (build 目录下)
先加载js文件

<script src="crypto-js/rollups/aes.js" type="text/javascript"></script>
<script src="crypto-js/rollups/md5.js" type="text/javascript"></script>
<script src="crypto-js/components/pad-zeropadding-min.js" type="text/javascript"></script>
/**
 * 加密
 */
function encrypt(str,key) {
    key = CryptoJS.enc.Utf8.parse(key?key:"1111111111111111");// 秘钥
    var iv= CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv
    var encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });
    return encrypted.toString();
}
/**
 * 解密
 * @param str
 */
function decrypt(str) {
    var key = CryptoJS.enc.Utf8.parse("1111111111111111");// 秘钥
    var iv=    CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv
    var decrypted = CryptoJS.AES.decrypt(str,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});
    return decrypted.toString(CryptoJS.enc.Utf8);
}
//调用
//加密
console.log(encrypt("12345"));
//解密
console.log(decrypt("待解密字符"));

实际使用

JS

//加密部分要改造一下
/**
 * 加密
 */
function encrypt(str,key) {
    key = CryptoJS.enc.Utf8.parse(CryptoJS.MD5(key).toString());//秘钥
    var iv= CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv
    var encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });
    return encrypted.toString();
}
//验证码 转换成大写
var username=$('#username').val();//获取用户名
var pwd=$('#pwd').val();//获取密码
var verify=$('#verify').val();//获取验证码
verify = verify.toUpperCase();
var json = {username: username, pwd: pwd};//被加密的数据
var aes = encrypt(JSON.stringify(json), verify);//加密
var param = {verify: verify, param: aes};
$.post("/user/login?_=" + new Date().getTime(), param, function (data) {
    if (data) {
    ...
    } else {
    ....
    }
}, "json");

PHP

$verify=input('verify');//验证码
$param=input('param');//加密后数据
//先转换成大写
//然后MD5
$json=AesJs::decrypt($param,md5(strtoupper($verify)));
echo $json;
$arr=json_decode($json,true);
print_r($arr);

来源
http://blog.csdn.net/momo_mutou/article/details/44240371

目录
相关文章
|
26天前
|
存储 算法 安全
PHP AES加解密示例
PHP AES加解密示例
21 0
PHP AES加解密示例
|
10天前
|
算法 安全 搜索推荐
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
|
14小时前
|
搜索推荐 安全 网络安全
AES 加密解密技术原理模式和实践
AES (Advanced Encryption Standard), aka Rijndael, is a symmetric encryption algorithm offering high security and speed over DES.
|
27天前
|
Java PHP 数据安全/隐私保护
php和Java配合 aes
php和Java配合 aes加密
17 1
|
21天前
|
算法 安全 网络安全
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
支付系统,网络安全06----支付安全---,机密性,加密算法,目前最流行的加密算法,AES加密算法,目前最流行的非对称加密算法RSA,对称加密和非对称加密的优缺点,非对称加密是基于非常复杂的数学算法
|
22天前
|
JavaScript 数据安全/隐私保护
vue 数据加密 js-base64
vue 数据加密 js-base64
16 0
|
1天前
|
安全 网络安全 量子技术
数字堡垒之下:网络安全漏洞、加密技术与安全意识的三维防御
在数字化浪潮汹涌的当下,网络安全成为了维系信息社会稳健运行的关键。本文深入探讨了网络安全面临的主要威胁——安全漏洞,并分析了其成因与对策。同时,文章详细阐述了加密技术在保护数据安全中的核心作用及其发展趋势。最后,强调了提升个人与企业的安全意识在构建网络安全防线中的重要性。通过这三个维度的深度分析,旨在为读者呈现一个全面的网络安全知识框架,助力于构建更加稳固的数字防御体系。
|
17小时前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【7月更文挑战第23天】在数字化时代,网络安全和信息安全已成为全球关注的焦点。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性。我们将了解不同类型的网络攻击和漏洞,并讨论如何通过加密技术和提高安全意识来保护个人和组织的数据。文章还将介绍一些实用的工具和策略,以帮助读者更好地保护自己的网络安全。
|
1天前
|
SQL 监控 安全
网络安全漏洞与防御策略:从加密技术到安全意识的全方位剖析
【7月更文挑战第23天】在数字化时代,网络安全已成为维护信息完整性、保密性和可用性的关键。本文深入探讨了网络安全漏洞的种类、成因及其潜在影响,并分析了加密技术在保护数据中的核心作用。同时,文章强调了提升个人和组织安全意识的重要性,并提出了实用的防御策略,旨在为读者提供一套全面的网络安全解决方案。
|
1天前
|
安全 网络安全 量子技术
数字堡垒之下:网络安全漏洞、加密技术与安全意识的三重奏
随着数字化时代的到来,网络安全和信息安全成为维护个人隐私和企业资产的重要屏障。本篇文章深入探讨了网络安全中常见的漏洞类型、当前加密技术的发展态势以及提升全民网络安全意识的重要性。通过分析最新的统计数据和案例研究,本文旨在为读者提供一套全面的网络安全知识框架,以识别潜在威胁,采取有效防御措施,并培养必要的安全习惯。 【7月更文挑战第23天】