前端代码:

// 这个是加密用的
function encrypt(text){
var key = CryptoJS.enc.Utf8.parse('1234567890654321'); //为了避免补位,直接用16位的秘钥
var iv = CryptoJS.enc.Utf8.parse('1234567890123456'); //16位初始向量
var encrypted = CryptoJS.AES.encrypt(text, key, {
iv: iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
encrypt(123); // AMFSKTJa3K092qSi5XC46w== // 这个是解密用的
function decrypt (text) {
var key = CryptoJS.enc.Utf8.parse('1234567890654321'); //为了避免补位,直接用16位的秘钥
var iv = CryptoJS.enc.Utf8.parse('1234567890123456'); //16位初始向量
var encrypted = CryptoJS.AES.decrypt(text, key, {
iv: iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7

  });

  return encrypted.toString(CryptoJS.enc.Utf8);
}

php代码:

// 加密用的
// 参数1,为数据,参数2为加密算法,AES里最安全的一种
$a = openssl_encrypt('123', 'aes-128-cbc', '1234567890654321', 1, '1234567890123456');
echo base64_encode($a); // AMFSKTJa3K092qSi5XC46w== // 解密用的
$b = openssl_decrypt($encrypted, 'aes-128-cbc', $key, 0 , $iv);
echo $b; // 其中,加密方法的第四个参数为1,而解密的第四个参数为0,不然解密不了

这样可以实现js加密结果和php加密结果一致,而且两者都能互相解密

另,其他参数不变情况下,修改js的 padding为 CryptoJS.pad.ZeroPadding 会是加密结果不同,但确可以php的 openssl_decrypt 解密,且解密结果一样。

前后端(PHP)使用AES对称加密的更多相关文章

  1. AES对称加密和解密

    package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; impo ...

  2. AES对称加密

    import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre ...

  3. java的AES对称加密和解密,有偏移量

    import java.math.BigDecimal; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; i ...

  4. AES对称加密和解密(转)

    AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ...

  5. 正确使用AES对称加密

    正确使用AES对称加密 经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据.但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险. 我经常遇到 ...

  6. JAVA中AES对称加密和解密

    AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ...

  7. AES对称加密解密类

    import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.spec.Se ...

  8. 17.app后端如何保证通讯安全--aes对称加密

    在上文<16.app后端如何保证通讯安全--url签名>提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点.在本文中,会介绍对称加密的具体原理,和详 ...

  9. 使用Aes对称加密解密Web.Config数据库连接串

    现在很多公司开始为了保证数据库的安全性,通常会对Web.Config的数据库连接字符串进行加密.本文将介绍学习使用Aes加密解密数据库连接字符串.本文采用MySql数据库. AES概念简述 AES 是 ...

随机推荐

  1. HDU 4049 Tourism Planning(状压DP)题解

    题意:m个城市,n个人,让这n个人按固定顺序走遍m个城市.每个城市有一个单人票价pi.每个人在每个城市能获得vij的价值.如果多个人在同一城市,那么会额外获得价值,给出一张n * n价值表,额外价值为 ...

  2. ewebeditor 路径

    1.关键文件的名称和路径Admin_Login.asp 登录页面Admin_Default.asp 管理首页Admin_Style.aspAdmin_UploadFile.aspUpload.aspA ...

  3. URL parser All In One

    URL parser All In One const url = new URL(`https://admin:1234567890@cdn.xgqfrms.xyz:8080/logo/icon.p ...

  4. LeetCode 最大收益的分配工作

    LeetCode 最大收益的分配工作 工作安排 现在有n位工程师和6项工作(编号为0至5),现在给出每个人能够胜任的工作序号表(用一个字符串表示,比如:045,表示某位工程师能够胜任0号,4号,5号工 ...

  5. google firebase in action

    google firebase in action firebase https://console.firebase.google.com/project/_/overview?purchaseBi ...

  6. Microsoft Lifecycle Policy

    Microsoft Lifecycle Policy The Microsoft Lifecycle Policy gives you consistent and predictable guide ...

  7. js inheritance all in one

    js inheritance all in one prototype & proto constructor Object.definepropety Object.create() js ...

  8. Android Studio show whitespace & Android studio 设置注释缩进

    Android Studio show whitespace & Android studio 设置注释缩进 https://github.com/xgqfrms/flutter/issues ...

  9. js 如何获取某一个月的第一天是周几

    js 如何获取某一个月的第一天是周几 calendar ??? padding dates // day = 1 const firstMonthDate = new Date(year + mont ...

  10. robots.txt

    robots.txt A robots.txt file tells search engine crawlers which pages or files the crawler can or ca ...