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

  • 电脑如何下载浏览器(电脑如何下载浏览器并安装)

    电脑如何下载浏览器(电脑如何下载浏览器并安装)

  • 如何恢复微信支付通知(如何恢复微信支付功能设置)

    如何恢复微信支付通知(如何恢复微信支付功能设置)

  • 腾讯视频转码可以关机吗(腾讯视频转码可以取消吗)

    腾讯视频转码可以关机吗(腾讯视频转码可以取消吗)

  • 华为笔记本突然卡住(华为笔记本突然开不了机按电源没反应)

    华为笔记本突然卡住(华为笔记本突然开不了机按电源没反应)

  • i78550u是低端处理器吗(i78550属于什么水平)

    i78550u是低端处理器吗(i78550属于什么水平)

  • 飞行模式微信能收到吗(飞行模式微信能收款吗)

    飞行模式微信能收到吗(飞行模式微信能收款吗)

  • 苹果7手机麦克风启动不成功怎么办(苹果7手机麦克风没声音怎么回事)

    苹果7手机麦克风启动不成功怎么办(苹果7手机麦克风没声音怎么回事)

  • iphone m开头的型号(苹果m开头的是什么型号)

    iphone m开头的型号(苹果m开头的是什么型号)

  • 手机通话对方听不清楚是什么原因是(手机通话对方听到声音很小)

    手机通话对方听不清楚是什么原因是(手机通话对方听到声音很小)

  • iphone11pro是6g运存吗(iphone11pro到底是4g还是6g)

    iphone11pro是6g运存吗(iphone11pro到底是4g还是6g)

  • 为什么腾讯会议共享屏幕会闪(为什么腾讯会议电脑摄像头开了但没画面)

    为什么腾讯会议共享屏幕会闪(为什么腾讯会议电脑摄像头开了但没画面)

  • g550cpu能干啥(g550cpu能玩什么游戏)

    g550cpu能干啥(g550cpu能玩什么游戏)

  • 光信号闪红灯多久能好(光信号闪红灯多久能恢复正常)

    光信号闪红灯多久能好(光信号闪红灯多久能恢复正常)

  • 微信怎么设置对方忙(微信怎么设置对方发信息过来看不到)

    微信怎么设置对方忙(微信怎么设置对方发信息过来看不到)

  • wds状态未开启什么意思(wds未开启是什么意思路由器设置里)

    wds状态未开启什么意思(wds未开启是什么意思路由器设置里)

  • 阿里鱼卡是全国免流吗(阿里鱼卡官网)

    阿里鱼卡是全国免流吗(阿里鱼卡官网)

  • 多线程模式有什么作用(多线程模式开了更卡吗)

    多线程模式有什么作用(多线程模式开了更卡吗)

  • 拉黑的电话号码打过去提示什么(拉黑的电话号码在哪里可以找到苹果手机)

    拉黑的电话号码打过去提示什么(拉黑的电话号码在哪里可以找到苹果手机)

  • vivoy93如何快速关机(vivoy93s快捷键怎么调出来)

    vivoy93如何快速关机(vivoy93s快捷键怎么调出来)

  • ipadpro强制重启(ipadpro强制重启是哪个键)

    ipadpro强制重启(ipadpro强制重启是哪个键)

  • RSync文件备份同步 Linux服务器rsync同步配置图文教程

    RSync文件备份同步 Linux服务器rsync同步配置图文教程

  • 苹果手机记事本位置(苹果手机记事本提醒如何设置)

    苹果手机记事本位置(苹果手机记事本提醒如何设置)

  • 各浏览器useragent大全 包括(chrome/360/搜狗浏览器以及百度/google/搜狗/神马)(各浏览器主页的网址)

    各浏览器useragent大全 包括(chrome/360/搜狗浏览器以及百度/google/搜狗/神马)(各浏览器主页的网址)

  • python中shell如何逐行输入?(python的shell怎么运行文件)

    python中shell如何逐行输入?(python的shell怎么运行文件)

  • 国税登记号和地税登记号是什么
  • 土地税和房产税缴纳时间
  • 政府补贴款需要缴纳增值税
  • 员工回家探亲的文案
  • 完税凭证可以补办吗
  • 金税盘证书口令被锁死自己能解吗
  • 退税抵税申请表
  • 增值税进项抵扣怎么做账
  • 一次性收取全年培训费
  • 委托加工设备
  • 销售产生的磅差入什么科目?
  • 企业委托银行收款,银行以办妥手续,而企业尚未收到凭证
  • 产权转移书据印花税是双方交吗
  • 代驾费开增值税专票还是普票?
  • 未达起征点怎么写摘要
  • 房地产企业如何计算增值税
  • 服务费的发票
  • 对于不需要交强险的人
  • 超出标准的公积金怎么交
  • 收到投资款怎么做凭证
  • 固定资产销售账务处理的例题
  • 没有税率的发票怎么开
  • 施工企业资产负债率
  • 财产行为税税种
  • 没有税控盘怎么开票
  • 商品进价销售要上税吗
  • 贸易公司买进卖出
  • 联想g40开机屏幕一直闪
  • 公司预交一年的养老保险
  • 其他权益工具投资交易费用计入哪里
  • 搜索框无法搜索内容
  • Skype.exe - Skype是什么进程 有什么用
  • php输出流
  • php 提交表单
  • 销售滞后税务处理
  • 购进设备抵扣税额
  • 研发支出属于哪个表
  • 基于Python实现五大常用分类算法(原理+代码)
  • static php作用
  • 增值税一般纳税人登记管理办法
  • JavaScript(WebAPI)+具体案例
  • php实现批量删除
  • 定期定额征收超出3万怎么办
  • 固定资产的特点不包括
  • 个人出租房屋要交印花税吗
  • php安装不了
  • 应收账款让售会计怎么做
  • 应税销售额税率
  • 无租房合同可以贷款吗
  • 软件销售收入确认时点
  • 固定资产清理借方表示什么意思
  • sqlserver 中charindex/patindex/like 的比较
  • 往来账款应该怎么记账
  • 休产假的工资扣个人所得税吗
  • 法人如何网上申请辞职手续
  • 跨年度发票能否税前扣除
  • 收回股权投资
  • 母子公司可以合并吗
  • 购买方已认证销售方作废
  • 有限公司结业清算
  • 支付投资者投入的款项
  • 负债清偿损益明细表计税基础怎么填
  • 专利申请费用能走工会会费吗
  • mysql %d
  • mysql分页性能
  • win10系统崩溃后可以通过什么来恢复
  • win10系统怎么调
  • 2015微软发布会
  • soundtrax.exe - soundtrax是什么进程
  • win10开机cpu占用率100%
  • perl时间函数
  • unity进阶之路
  • div li
  • perl常用函数
  • bootstrap技术
  • nodejs图片上传
  • python 批量操作
  • javascript有哪些常用的属性和方法
  • jquery动态设置css
  • 如何开具红字发票明细
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设