Vue+php 使用AES进行加密解密
短信预约 -IT技能 免费直播动态提醒
php
代码
public function encrypt($data, $key, $iv) { return base64_encode(openssl_encrypt($data, "AES-128-CBC", $key, true, $iv)); } public function decrypt($data, $key, $iv) { return openssl_decrypt( $data, 'AES-128-CBC', $key, 0 , $iv ); } public function decryptToJs($data, $key, $iv) { return openssl_decrypt( $data, 'AES-128-CBC', $key, 2 , $iv ); } * */
使用
public function encode(){ //PHP加密秘钥16位$encrypt_key = '1234567_IT_MIYAO';//长度必须为16位,前后端必须一致//加密向量16位$iv = "XIANGYU_IT_MIYAO";//PHP加密数据$arr = array('username' => '111', 'password' => '123456', 'name' => '小明');//转换成json字符串$encrypt_data = json_encode($arr);$encrypted = $this->encrypt($encrypt_data, $encrypt_key, $iv);//加密结果 var_dump($encrypted); } public function decode(){ //加密字符串 $encrypt_data = 'xxxxxxxxxxxxxxxx'; $encrypt_key = '1234567_IT_MIYAO'; $iv = "XIANGYU_IT_MIYAO"; $decode = $this->decrypt($encrypt_data,$encrypt_key,$iv); var_dump($decode); }
vue
前端安装插件crypto-js
npm install crypto-js
编写前端加密工具类 /api/crypto.js
let CryptoJS = require('crypto-js'); export default { encrypt(str, key, iv) { //密钥16位 var key = CryptoJS.enc.Utf8.parse(key); //加密向量16位 var iv = CryptoJS.enc.Utf8.parse(iv); var encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); }, decrypt(str, KEY, IV) { var key = CryptoJS.enc.Utf8.parse(KEY); var iv = CryptoJS.enc.Utf8.parse(IV); var decrypt = CryptoJS.AES.decrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypt.toString(CryptoJS.enc.Utf8); } }
使用
import crypto from '../../api/crypto';//加密密钥16位var encrypt_key = '1234567_IT_MIYAO';//长度必须为16位 //加密向量16位var iv = 'XIANGYU_IT_MIYAO';//要加密的数据let data = { username: "xxxxx", password: "123456", name: "小明"}//加密var encrypted_string = crypto.encrypt(JSON.stringify(data), encrypt_key, iv);console.log(encrypted_string);// 解密try{var decrypted_string = crypto.decrypt(JSON.stringify(data), encrypt_key, iv);console.log(decrypted_string);}catch(exception){//错误console.log(exception.message);}
来源地址:https://blog.csdn.net/qq_36303853/article/details/127493140
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341