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

  • 冲减计提
  • 异地建厂如何交社保
  • 专票抵扣进项税可以省钱吗
  • 专票红冲要不要收回发票联
  • 存续小微企业
  • 经纪代理服务怎么做分录
  • 公司车买的保险怎么查电子保单
  • 企业理财收入交哪些税
  • 成本费用率偏低
  • 原材料增值税怎么算
  • 金税三期上线后的税收征管问题
  • 房地产企业城市配套费
  • 服务设计合同标准版
  • 跨年度冲减收入
  • 退回的费用如何入账
  • 开票收入怎么理解
  • 微软输入法中文输入卡顿
  • 如何养成良好的安全行为
  • 银行手续费发票税率
  • php 无限级分类
  • php7 ??
  • 进出口公司出口退税额
  • 冲减管理费用是什么意思
  • thinkphp6依赖注入
  • 印克斯湖国家公园中的德克萨斯矢车菊,德克萨斯州 (© Inge Johnsson/Alamy)
  • 分包工程的账务处理
  • 工资属于收益类科目吗
  • 计提补贴会计分录
  • php批量删除文件
  • typescript event
  • 为什么递延收益不产生所得税影响
  • 申报经营所得成绩怎么填
  • 所得税申报资产总额平均值
  • 购买税控设备的分录怎么做
  • 金蝶软件怎么录入发票号
  • 股东退股如何清算表格
  • 融资租赁租金计算工具使用的主要过程
  • 利息收入填在汇算清缴哪里
  • 高新技术企业补助需要交所得税吗
  • 现金冲账是什么意思
  • 购买原材料保险费分录
  • 施工单位的罚款标准
  • 原始凭证和记账凭证的填制
  • 个体户能开建筑劳务发票吗
  • 非税收入票据如何开具
  • 记账凭证模板
  • 托收承付的承付是指
  • 什么是当期损益和其他综合收益
  • sqlserver索引类型区别
  • mysql分区语句
  • MySQL execute、executeUpdate、executeQuery三者的区别
  • mysql的union和union all
  • Win7 64位旗舰版中让SSD固态硬盘更快的优化方法
  • 怎么操作win10系统
  • win7 手动输入用户名
  • winxp如何设置自动关机
  • linux 系统查看
  • ServiceLayer.exe - ServiceLayer是什么进程 有什么用
  • win10插上耳机后电脑还是外放如何解决
  • windows预览0x80072ee2
  • easyui combobox默认选中
  • 什么是从零开始
  • python2与python3中的区别
  • linux u+s
  • 脚本添加crontab
  • cmd下在win上做vpn的命令分享
  • JavaScript不支持ie
  • 基于jQuery实现Tabs选项卡自定义插件
  • windbg调试驱动
  • js跨域是什么意思
  • jQuery实现表格行和列的动态添加与删除方法【测试可用】
  • 怎么用jquery
  • js实现跨域访问的几种方式
  • 网上办税如何打印电子凭证
  • 公务员副处级工资待遇
  • 开展税务培训
  • 安阳市灵活就业人员社保补贴
  • 耐心服务的名言警句
  • 2020北京国税局的待遇
  • 北京税务局代个人开发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设