位置: IT常识 - 正文

java前后端加密解密crypto-js(java前后端加密解密请求)

编辑:rootadmin
java前后端加密解密crypto-js 项目场景:

推荐整理分享java前后端加密解密crypto-js(java前后端加密解密请求),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java加密器,java加密技术,java 加密,前后端数据加密,java后端加密前端解密,java前后端加密解密请求,前后端加密方式,java前端密码加密,内容如对您有帮助,希望把文章链接给更多的朋友!

适用于接口数据敏感信息,比如 明文传输姓名、居住地址、手机号等信息,如果存在明文传输敏感数据问题、及数据泄漏风险,则可使用此方法加密解密。

一、下载crypot-js

1.如果为vue项目,安装cnpm,采用命令安装即可:

安装命令:cnpm install crypto-js;

2.如果为一般web项目,https://github.com/brix/crypto-js,进行下载;

二、前端引入crypto-js文件,并命名为secrt.js

import CryptoJS from 'crypto-js'

// 默认的 KEY 与 iv 如果没有给,可自行设定,但必须16位

const KEY = CryptoJS.enc.Utf8.parse("abcdefgh12345678");

const IV = CryptoJS.enc.Utf8.parse('12345678abcdefgh');

/**

 * AES加密 :字符串 key iv  返回base64

 */

export function 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);

}

/**

 1. AES 解密 :字符串 key iv  返回base64

 2.  3. @return {string}

java前后端加密解密crypto-js(java前后端加密解密请求)

 */

export function 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();

}

三、前端页面引入并加密数据

import {Encrypt} from '../../secrt.js'

//text为需要加密的内容

var userId= Encrypt(text);

四、后端解密数据

1.pom引用

2.创建工具类

import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64;

public class SecretUtil {     /***      * key和iv值可以随机生成,确保与前端的key,iv对应      */     private static String KEY = "abcdefgh12345678";     private static String IV = "12345678abcdefgh";

    /***      * 加密      *       * @param data 要加密的数据      * @return encrypt      */     public static String encrypt(String data) {         return encrypt(data, KEY, IV);     }          /***

     *  解密      * @param data 要解密的数据      */     public static String desEncrypt(String data) {         return desEncrypt(data, KEY, IV);     }

    /**      * 加密方法      */     private static String encrypt(String data, String key, String iv) {         try {             // "算法/模式/补码方式"NoPadding PkcsPadding             Cipher 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;         }     }

    /**      * 解密方法      */     private 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;         }     } }  

3.数据解密

@GetMapping(value = "/userInfo")  public getUserInfo(@RequestParam(name = "userId") String userId)     String userId= desEncrypt(userId); }

本文链接地址:https://www.jiuchutong.com/zhishi/297815.html 转载请保留说明!

上一篇:使用antv/G6在vue项目中开发较复杂样式流程图(antv g6 node 嵌套)

下一篇:H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制(h5 画图)

  • 所得税损益类科目包括
  • 企业缴纳季度所得税
  • 期初和期末余额均在借方的账户,一般属于
  • 通行费 发票
  • 设计、制造
  • 房地产企业汇缴清算条件
  • 集团子公司之间调拨固定资产
  • 公司股东法人变更流程
  • 购进货物的价税怎么算
  • 工资薪金支出税收金额怎么算
  • 代开专票地税附加税申报办法
  • 工程预缴税款几个点
  • 7月1号出台的政策
  • 土地出售涉及哪些税
  • 财务费用是否存入银行卡
  • 出口已使用过的设备退税吗
  • 普通发票和增值税专用发票有什么异同
  • 缴纳投标保证金
  • 暂估成本比实际高分录
  • 收到即征即退退的发票
  • 财政拨款收入属什么科目
  • 房屋租赁合同变更
  • 开了红字发票销售方怎么账务处理?
  • win10如何添加网络适配器
  • 债务担保可以税前抵扣吗
  • php数据库语句
  • php精彩编程200例
  • 所得税和所得税税率
  • thinkphp设置伪静态
  • 企业采购过程中发生的材料短缺
  • 阿根廷圣克鲁斯省
  • 股票的红利
  • 销售费用属于损益类科目的收入还是费用
  • php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
  • idea实用技巧
  • web前端开发 vue
  • 单位食堂厨房设计方案
  • 在什么情况下要切除子宫
  • 代扣代缴手续费返还账务处理
  • mongodb $and
  • 购入画图软件
  • 小微企业应纳税所得额计算
  • 单位全额承担社保能税前扣除吗
  • 购买火车票报销,实际没乘车能查到嘛
  • 那怎么才能恢复
  • 小规模纳税人免税怎么做账
  • 未投入使用的固定资产折旧计入什么科目
  • 净值型 赎回
  • 设备融资租赁如何算综合利率
  • 接受非货币性资产投资入账价值
  • 闲置土地属于哪个部门
  • 软件开发服务费税率
  • 售后回购融资租赁的会计处理
  • 车辆购置税完税证明图片
  • 折扣销售方式销售货物只要发票中有注明的折扣额
  • 不含税价换算成含税价怎么算
  • 使用筷子就餐会不会传染乙肝病毒
  • win8安装虚拟机的步骤
  • 如何用u盘装系统盘
  • 你一定不知道的56个历史真相
  • redhat linux enterprise 5 输入ifconfig无效的解决方法
  • win10右下角的图标点不开
  • nodejs stdin
  • ie所有版本
  • perl中sub
  • opengl怎么导入模型
  • bootstrap要学吗
  • js的匿名函数
  • jq获取url
  • My Magic Android Tour —— 处女作
  • linux查看端口号占用
  • 修改文件名ren
  • unity3d怎么用
  • 猫的游戏视频
  • jquery获取元素父级body高度
  • 江苏城乡医疗保险网上缴费2024年
  • 百分之13的税率怎么算如何算百分之13的税率
  • 深圳罗湖区公安局长安慧君简历
  • 泗洪临淮公交车运行时间表
  • 车辆大本怎么办理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设