位置: 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 画图)

  • 分公司非独立核算
  • 税后营业利润和利润总额的区别
  • 个体户一定要自己经营吗
  • 注册资本5块钱
  • 生产成本里面的工资
  • 企业所得税税前扣除凭证管理办法
  • 应收债权属于非抵押吗
  • 银行多扣钱可以多倍赔偿吗
  • 个税的滞纳金怎么算
  • 质量保证产品一般是指
  • 个人代开普通发票需要出税费吗?
  • 物流辅助服务需要办许可证吗
  • 住宿费的普通发票怎么开
  • 餐饮行业纳税指引及营改增后税负变化!
  • 物业公司怎么开发票
  • 收入与应收款
  • 税务非正常户罚款多少
  • 固定资产装修费用计入房产税吗
  • 没有销项税进项要交税吗
  • 核销单怎么做
  • 存货跌价准备用账面余额还是账面价值
  • 运费收入会计处理
  • m1 mac 恢复出厂
  • 增值税出口退税为什么不属于政府补助
  • tracert命令的用法
  • 代扣的工会会费和工会经费
  • PHP:pg_connect()的用法_PostgreSQL函数
  • 计提增值税可以无付凭证吗
  • vue3 计算属性
  • twig里使用js变量的方法
  • 可供出售金融资产的会计处理
  • 耕地开垦费应计入哪个会计科目
  • RocketMQ-02
  • laravel 实例
  • 自建自用 房产税
  • Php数组转json 参数不带引号
  • 小微企业所得税如何填报
  • 材料暂估入库的依据有哪些
  • php无法上传文件
  • 供应商发票多开了如何处理?
  • 减免税款借贷方表示
  • sql server2012使用方法
  • 工会经费税务代收是什么意思
  • 现金流量表编制原则
  • 简易征收的税款可以抵减
  • 冲销以前年度多计提的费用分录
  • 服务业税率表
  • 发票抵扣联认证完还有用吗
  • 餐饮充值规则说明
  • 残保金缴纳额计算公式
  • 小微企业的认定由哪个部门负责
  • 物业公司预收的物业费怎么做账
  • 固定资产的核算包括
  • centos7安装MySQL5.6
  • kb4022719安装失败
  • 轻轻松松在树枝上摘果子用什么成语
  • mac系统怎么新建txt
  • centos7服务器配置
  • Win7打印机驱动备份
  • OS X Yosemite系统下载失败怎么办?OS X 10.10下载错误解决方法
  • hda linux
  • win7怎么多分出一个盘
  • 将windows的文件上传到ubuntu
  • Win7自带的扫雷怎么都打不开
  • 如何关闭win8.1自动更新
  • 使用Apache&花生壳架设Web服务器
  • bat脚本怎么运行
  • 随机游戏插件怎么使用
  • jquery$符号
  • jquery设置图片大小
  • node用什么写的
  • js模拟用户点击
  • Python cx_freeze打包工具处理问题思路及解决办法
  • unity3d功能
  • android刷新activity
  • 湖南省电子税务局登录
  • 发票上的税额由谁填写
  • 金米财税不退款怎么办
  • 工业厂房房产税什么时候开始征收
  • 福斯特会计软件下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设