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

  • 小米10s屏幕分辨率(小米10s屏幕分辨率怎么样)

    小米10s屏幕分辨率(小米10s屏幕分辨率怎么样)

  • qq闪退怎么回事(qq闪退是什么原因?)

    qq闪退怎么回事(qq闪退是什么原因?)

  • 荣耀x10max如何截屏(华为荣耀x10max怎么截图)

    荣耀x10max如何截屏(华为荣耀x10max怎么截图)

  • 携程候补抢票可以抢到吗(携程候补抢票可以取消吗)

    携程候补抢票可以抢到吗(携程候补抢票可以取消吗)

  • 怎么防止微信号被申诉找回(怎么防止微信号被盗)

    怎么防止微信号被申诉找回(怎么防止微信号被盗)

  • 魅族手机老是自动静音是什么原因(魅族手机老是自动安装软件怎么办)

    魅族手机老是自动静音是什么原因(魅族手机老是自动安装软件怎么办)

  • 微信统计功能在哪里(微信统计数据统计)

    微信统计功能在哪里(微信统计数据统计)

  • 充电宝可以给充电宝充电吗(充电宝可以给充电宝相互充电吗)

    充电宝可以给充电宝充电吗(充电宝可以给充电宝相互充电吗)

  • 非空单元格是什么意思

    非空单元格是什么意思

  • iphonex是什么基带(iphone x是什么基带的芯片)

    iphonex是什么基带(iphone x是什么基带的芯片)

  • 淘宝超过承诺发货时间(淘宝超过承诺发货时间每延迟一天)

    淘宝超过承诺发货时间(淘宝超过承诺发货时间每延迟一天)

  • 快手直播能给几个管理(快手直播能给几个人看)

    快手直播能给几个管理(快手直播能给几个人看)

  • 怎么把俩张照片合成一张照片(怎么把两张照片上的人p到一起)

    怎么把俩张照片合成一张照片(怎么把两张照片上的人p到一起)

  • 手机看电视卡是什么原因(手机看电视卡是怎么回事)

    手机看电视卡是什么原因(手机看电视卡是怎么回事)

  • ios自动清理缓存(ios自动清除缓存)

    ios自动清理缓存(ios自动清除缓存)

  • 苹果11上面的刘海怎么才能不显示(苹果11为啥有个小刘海)

    苹果11上面的刘海怎么才能不显示(苹果11为啥有个小刘海)

  • oppo手机开机键在哪里(oppo手机开机键坏了修一下多少钱)

    oppo手机开机键在哪里(oppo手机开机键坏了修一下多少钱)

  • 华为手环为何接不了电话(华为手环连接上为啥不能收到微信电话呢)

    华为手环为何接不了电话(华为手环连接上为啥不能收到微信电话呢)

  • iphonex与11的区别(iphonex与iphone11的区别)

    iphonex与11的区别(iphonex与iphone11的区别)

  • 天府通app可以坐公交车吗(天府通app可以坐新都公交车吗)

    天府通app可以坐公交车吗(天府通app可以坐新都公交车吗)

  • 好友步数为零怎么回事(朋友步数显示0步)

    好友步数为零怎么回事(朋友步数显示0步)

  • 设置幻灯片从头开始放映的快捷键是什么(设置幻灯片从头开始)

    设置幻灯片从头开始放映的快捷键是什么(设置幻灯片从头开始)

  • 华为荣耀20发布时间(华为荣耀系列)

    华为荣耀20发布时间(华为荣耀系列)

  • 可视化大屏的几种适配方案(可视化大屏技术)

    可视化大屏的几种适配方案(可视化大屏技术)

  • ES6--》对象扩展方法(es6对象扩展运算符)

    ES6--》对象扩展方法(es6对象扩展运算符)

  • 暂估入账纳税调整填哪里
  • 购固定资产需要交什么税
  • 增值税专用发票可以开电子发票吗
  • 火车票增值税申报表怎么填
  • 股东费用如何入账
  • 固定资产加速折旧税收优惠政策
  • 公司收个人不开票的货款是否可以收取现金?
  • 外汇税收怎么缴纳增值税
  • 制造费用包括哪三类
  • 对公账户的钱怎么取出来才不用交税
  • 借款合同法律规定的表述
  • 物流快递代收货款怎么退
  • 融资贷款保险费计算公式
  • 用友软件冲销凭证是什么意思
  • 股东拿不到钱
  • 开具旧税号也能认证成功
  • 运输发票抵扣税率是有多少?
  • 金税盘不能清卡是啥原因
  • 个人房补申请书怎么办
  • 雇佣临时工发生意外能追房东赔偿吗
  • 核定征收和定期定额的区别
  • 电子承兑重复背书给同一个人有影响吗
  • 现金购入库存商品的分录
  • 企业的其他业务是什么
  • 股东以个人名义签订租赁合同
  • 推迟确认收入的方法
  • 会计中坏账准备的借贷方向
  • 存在弃置费用的固定资产,如果履行弃置义务
  • 如何冲减其他应付款又不影响银行存款
  • 代销的价格怎么定
  • php中require和include是用来做什么的
  • 投资中间人要担什么责任
  • 废品损失属于产品成本项目吗
  • 覆盖的盖
  • php socket_create
  • 前端已死?金三银四?你收到offer了吗?
  • 这可能是最好的144平米小平层户型
  • 可以抵扣土地增值税的项目
  • 增值税留抵税额科目如何使用
  • 离职补偿金可以拖欠么
  • 公司收不到的账款而发不出去怎么办
  • 推广费属于什么大类
  • 其他应付款在清算时怎么处理
  • 独资企业和公司区别
  • CMS不要让MySQL为你流泪
  • 管理费用属于费用类吗
  • 通货膨胀率怎么求
  • 防伪码显示查询次数和时间
  • mysql delete limit 使用方法详解
  • 小规模纳税人增值税申报表怎么填
  • 资本公积转增资本要交税吗
  • 应付账款多好还是少好
  • 折旧方法计算公式
  • 事业单位利息收入的正确分录
  • 工程预付款发票开什么明细项目
  • 长期待摊费用待摊费用
  • 建设期利息有哪些
  • 抵货款怎么做账
  • 什么经营范围可以开推广服务费
  • 审计备案表
  • 资产负债表基本公式
  • aspnet数据库访问
  • sql语句实现查询示例
  • win8 开机
  • eve是什么文件
  • win7运行老游戏方法
  • win8怎么删除输入法
  • win8切换到桌面
  • 微软发布更新的时间每月
  • Win10年度升级版Redstone来了:更加个人化的计算体验
  • 安卓百分百
  • cocos 2d x
  • js创建类对象的方法
  • jquery二级导航栏
  • 最精简的年终工作总结
  • javascript面向对象编程指南 pdf
  • 无偿划转暂行规定
  • 组织收入原则是应收尽收坚决不收过头税费
  • 车辆购置税纳税申报表下载
  • 车辆保险代收车船税会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设