邮箱的官方网站注册,热词分析工具,网站后台怎么改密码,上海网站开发开发好的公司电话报错如下#xff1a; 原因#xff1a;如图#xff0c;富文本路径中存在 / 字符#xff0c;导致上传出错。 解决方案#xff1a;将富文本框内容在前端进行加密#xff0c;后端再解密。
前端#xff1a;
安装 crypto-js 插件
npm install crypto-js
创建工具类 :在 sr… 报错如下 原因如图富文本路径中存在 / 字符导致上传出错。 解决方案将富文本框内容在前端进行加密后端再解密。
前端
安装 crypto-js 插件
npm install crypto-js
创建工具类 :在 src 目录下的 utils 中创建asc.js
import CryptoJS from crypto-js// 需要和后端一致
const KEY CryptoJS.enc.Utf8.parse(wenhePiCloudSecre);
const IV CryptoJS.enc.Utf8.parse(wenhePiCloudSecre);export default {/*** 加密* param {*} word* param {*} keyStr* param {*} ivStr*/encrypt (word, keyStr, ivStr) {let key KEY;let iv IV;if (keyStr) {key CryptoJS.enc.Utf8.parse(keyStr);iv CryptoJS.enc.Utf8.parse(ivStr);}let srcs CryptoJS.enc.Utf8.parse(word);var encrypted CryptoJS.AES.encrypt(srcs, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);},/*** 解密* param {*} word* param {*} keyStr* param {*} ivStr*/decrypt (word, keyStr, ivStr) {let key KEY;let iv IV;if (keyStr) {key CryptoJS.enc.Utf8.parse(keyStr);iv CryptoJS.enc.Utf8.parse(ivStr);}let base64 CryptoJS.enc.Base64.parse(word);let src CryptoJS.enc.Base64.stringify(base64);let decrypt CryptoJS.AES.decrypt(src, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});let decryptedStr decrypt.toString(CryptoJS.enc.Utf8);return decryptedStr.toString();}
}
使用引入函数使用函数
asc.encrypt(data) 后端 maven中引入包 dependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15on/artifactIdversion1.60/version/dependency创建工具类
package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;/*** author root*/
public class SecretUtil {/**** key和iv值需要和前端一致*/public static final String KEY wenhePiCloudSecre;public static final String IV wenhePiCloudSecre;/*** 加密方法** param data 要加密的数据* param key 加密key* param iv 加密iv* return 加密的结果*/public static String encrypt(String data, String key, String iv) {try {//算法/模式/补码方式NoPadding PkcsPaddingCipher cipher Cipher.getInstance(AES/CBC/NoPadding);int blockSize cipher.getBlockSize();byte[] dataBytes data.getBytes();int plaintextLength dataBytes.length;if (plaintextLength % blockSize ! 0) {plaintextLength plaintextLength (blockSize - (plaintextLength % blockSize));}byte[] plaintext new byte[plaintextLength];System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);SecretKeySpec keyspec new SecretKeySpec(key.getBytes(), AES);IvParameterSpec ivspec new IvParameterSpec(iv.getBytes());cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);byte[] encrypted cipher.doFinal(plaintext);return new Base64().encodeToString(encrypted);} catch (Exception e) {e.printStackTrace();return null;}}/*** 解密方法** param data 要解密的数据* param key 解密key* param iv 解密iv* return 解密的结果*/public static String desEncrypt(String data, String key, String iv) {try {byte[] encrypted1 new Base64().decode(data);Cipher cipher Cipher.getInstance(AES/CBC/NoPadding);SecretKeySpec keySpec new SecretKeySpec(key.getBytes(), AES);IvParameterSpec ivSpec new IvParameterSpec(iv.getBytes());cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);byte[] original cipher.doFinal(encrypted1);return new String(original).trim();} catch (Exception e) {e.printStackTrace();return null;}}
}
使用 object.setDocContent(SecretUtil.desEncrypt(object.getDocContent(),SecretUtil.KEY,SecretUtil.IV));
搞定