使用cdn加载:
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
但有时build上传到服务器,浏览器加载不了cdn地址,可以另存为上传到自家服务器上。
在项目build文件夹下找到webpack.base.conf,配置CryptoJS
JS端:
string 要加密/解密的字符串
code 秘钥字符串
operation 默认false表示加密,传入true表示解密
// 加密解密方法:string-需要解密的字段 code-约定的密钥 operation 默认false表示加密,传入true表示解密
secret (string, code, operation) {
code = CryptoJS.MD5(code).toString()
var iv = CryptoJS.enc.Utf8.parse(code.substring(0, 16))
var key = CryptoJS.enc.Utf8.parse(code.substring(16))
if (operation) {
return CryptoJS.AES.decrypt(string, key, {
iv: iv,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)
}
return CryptoJS.AES.encrypt(string, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString()
},
注意:如果需要将加密的字符串在网址中传递,使用encodeURIComponent(str)函数转码即可。
PHP端:
$string 要加密/解密的字符串
$code 秘钥字符串
$operation 默认false表示加密,传入true表示解密
function secret($string,$code,$operation=false){
$code = md5($code);
$iv = substr($code,0,16);
$key = substr($code,16);
if($operation){
return openssl_decrypt(base64_decode($string),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);
}
return base64_encode(openssl_encrypt($string,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));
}
注意:本函数支持php到7+ ,同时兼容5.6.33(已测试通过的版本) 。如果需要将加密的字符串在网址中传递,使用urlencode($str)函数转码即可。
案例: PHP后端加密:
public function index(){
$string = 'hello world';
$code = 'abcedfg';
$str = $this->secret($string,$code);
return urlencode($str);
}
JS前端解密:
var $string = '页面已存在的密文';
var $code = 'abcedfg';
var string = secret($string,$code,true);
console.log(string);
备注:为了避免暴力破解,$code要设置得足够复杂。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。