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

  • 小规模零税率申报流程
  • 出库成本是什么意思
  • 未认证待抵扣进项税重分类
  • 固定资产累计折旧是什么科目
  • 成本计算账户期末一般有余额吗
  • 哪些津贴不扣税
  • 小企业会计准则和一般企业会计准则的区别
  • 测绘费发票需要备注么
  • 签证费没有发票可以入账吗
  • 还有预算外资金的说法吗
  • 商品明细分类账怎么做
  • 坐收坐支在会计上如何反映
  • 单品毛利计算公式怎么算
  • 土地前期开发费用计征契税
  • 餐饮 专票
  • 营改增后房地产企业增值税税率
  • 拿到进项票下一步做啥
  • 会计七月份忙吗
  • 简易计税方法适用范围
  • 调整薪酬结构
  • 中小企业固定资产管理存在的问题
  • 母子公司之间转让房产
  • 工资薪金总额包括哪些内容
  • 理财公司收到客户投资款怎么处理
  • 财务费用借方记负数的原因
  • mac老款设备怎样升级os14
  • windows缺失
  • 如何突出显示一行中的最小值
  • rrpcsb.exe - rrpcsb是什么进程 有什么用
  • php的in_array
  • 私营公司股权转让
  • 股权出资成立公司的条件
  • 转销盘盈会计分录
  • 豹七三七粉的价格
  • 一般贸易和进料加工贸易的区别
  • 制造费用属于期间费用期末一定无余额吗
  • 财政补贴增值税如何开票
  • Realsense D455/435内参标定以及手眼标定
  • php如何生成html
  • thinkphp wherein
  • thinkphp3.x中session方法的用法分析
  • 项目费用怎么入账
  • 员工报销的差旅费属于什么科目
  • php背景图片代码
  • 目标检测选SSD还是YOLO
  • js let用法
  • thinkphp 多表查询
  • mac m1 安装windows
  • mongodb安装教程图解
  • 专用发票金额与专票不符
  • 其他应付款贷方表示什么意思
  • 勾稽关系怎么算
  • 无形资产的摊销年限及摊销方法
  • 出口货物退运已补税(未退税)证明
  • 企业增值税征收范围
  • 本年利润必须转入利润分配吗
  • 电子承兑 背书
  • 预收账款处理
  • 工会经费的使用应当依法接受国家的监督
  • 进项税额转出有余额怎么调整
  • 工伤误工费标准是按照社平工资来算的吗
  • 出口为什么没有增值税
  • 事业单位应设置事业收入科目
  • 开启windows远程桌面服务
  • dll文件在哪儿
  • mac电脑登录
  • centos如何安装yum
  • win8系统怎么到桌面
  • win7系统怎么调出运行窗口
  • windows8怎么关闭广告弹窗
  • cocos2d 网页
  • 如何检查自己是否抑郁
  • js中ajax完整例子
  • python selectfrommodel
  • 年轻干部是什么意思
  • 阜阳烟草证办理条件
  • 国税局黑龙江省
  • 买下中国需要多少钱?
  • 问一下医院
  • 新能源车需要缴纳购置税吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设