前端使用 CryptoJS(v3.1.2) 进行des解密,后端java
后端Java使用JDK的API进行des加密,
需要前端解析
JavaScript解密
注意key和iv(向量)都应该是utf8格式的
Java使用byte数组加密的,前端需要先转换为字符串,然后再转为utf8
<!DOCTYPE html>
<html>
<head><title>des</title><script type="text/javascript" src="../CryptoJS v3.1.2/rollups/tripledes.js"></script>
</head>
<body></body>
<script type="text/javascript">function getStrFromBytes (arr) {var r = "";for(var i=0;i<arr.length;i++){r += String.fromCharCode(arr[i]);}console.log(r);return r;}var key = 'xxxxxxx'; // 秘钥var message = 'wXgrbJBCU2vZqzTJRd6VP/evr5rQSC/VM7ckcFYXW8DeGOt/rRFIXpU0BDfTAMjMJHV9AC2xqNw='; // 待解密密文var keyHex = CryptoJS.enc.Utf8.parse(key); // 将秘钥转换为utf8格式var ivHex = CryptoJS.enc.Utf8.parse(getStrFromBytes([0x12, 0x34, 0x56,0x78, 0x90, 0xAB,0xCD, 0xEF ])); // 将向量装换位字符串再转为utf8var decrypted = CryptoJS.DES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(message) // 因为Java加密时进行了Base64编码,所以此处解码}, keyHex, {iv: ivHex,mode: CryptoJS.mode.CBC, // 模式有很多种,由Java代码知道使用的是CBCpadding: CryptoJS.pad.Pkcs7 // 填充模式有很多种,但是Java用的Pkcs5,此处Pkcs7也是可以解密的});console.log(decrypted); // 不转换为字符串是得不到字符串结果的console.log(decrypted.toString(CryptoJS.enc.Utf8));</script>
</html>
Java加密
public class DESUtil {private static final byte[] DES_IV = { (byte) 0x12, (byte) 0x34, (byte) 0x56,(byte) 0x78, (byte) 0x90, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF };// 设置向量,略去public static String encode(String data, String key) throws Exception {DESKeySpec keySpec = new DESKeySpec(key.getBytes());SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");Cipher enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");// 得到加密对象CipherenCipher.init(Cipher.ENCRYPT_MODE, keyFactory.generateSecret(keySpec), new IvParameterSpec(DES_IV));// 设置工作模式为加密模式,给出密钥和向量byte[] pasByte = enCipher.doFinal(data.getBytes("utf-8"));BASE64Encoder base64Encoder = new BASE64Encoder();return base64Encoder.encode(pasByte);}public static String decode(String data, String key) throws Exception {DESKeySpec keySpec = new DESKeySpec(key.getBytes());SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");Cipher deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");deCipher.init(Cipher.DECRYPT_MODE, keyFactory.generateSecret(keySpec), new IvParameterSpec(DES_IV));BASE64Decoder base64Decoder = new BASE64Decoder();byte[] pasByte = deCipher.doFinal(base64Decoder.decodeBuffer(data));return new String(pasByte, "UTF-8");}public static void main(String[] args) throws Exception {System.out.println("加密:" + DESUtil.encode("innersect://navigation?target=product&id=2935&source=wxapp", "tmmt2017"));System.out.println("加密:" + DESUtil.encode("innersect://navigation?target=reserve&id=15", "tmmt2017"));System.out.println("加密:" + DESUtil.encode("innersect://navigation?target=reserve&id=17", "tmmt2017"));System.out.println("解密:" + DESUtil.decode("wXgrbJBCU2vZqzTJRd6VP/evr5rQSC/VM7ckcFYXW8DeGOt/rRFIXpc6NZH5S/4D", "tmmt2017"));System.out.println("解密:" + DESUtil.decode("wXgrbJBCU2vZqzTJRd6VP/evr5rQSC/VM7ckcFYXW8DeGOt/rRFIXgg8CI/CQ78h", "tmmt2017"));}}
前端使用 CryptoJS(v3.1.2) 进行des解密,后端java相关推荐
- java des解密乱码_des解密不完整,前面几位是乱码的解决办法
在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码.废了半天劲,终于找到了问题所在. 下面先介绍一下des,了解des的同学可以直接看下面的解决办法. ...
- 前端vue后端java,Vue调用后端java接口的实例代码_亦心_前端开发者
前段时间 做了个学校的春萌项目,其中用到 先上后端接口代码: package controller; import net.sf.json.JSONObject; import util.DBUtil ...
- 前端DES加密、base64编码,后端DES解密、base64解码
项目场景: 在系统开发的过程中有的时候,我们为了数据的安全性会把前端的数据进行加密,然后再在后端程序中对加密数据进行解密或解密,今天我们就在这里说2种简单的方法(DES加密.base64编码) 具体实 ...
- 前端使用CryptoJS加密解密
VUE中使用CryptoJS,安装并且引入,百度搜索下,这里主要讲怎么加密解密 import CryptoJS from "crypto-js"; //DES加密 /*** DES ...
- CryptoJS v3.1.2 源码自取
CryptoJS 官方地址:https://github.com/sytelus/CryptoJS 源码自取: 新建文件 crypto.js /* CryptoJS v3.1.2 code.googl ...
- 前端使用CryptoJS的AES解密,Java后端加密实现
前端使用CryptoJS的AES解密,Java后端加密实现.CryptoJS的AES输出使用的是openssl格式,所以处理起来有一些不一样,详细代码如下: import org.bouncycast ...
- 前端利用CryptoJS进行AES对称加解密(16进制编码)
加密相关JS https://www.npmjs.com/package/crypto-js 引入JS 使用示例: =附上原文代码方便大家自由使用=========== //============= ...
- 微信小程序 php解密,微信小程序des加密、PHP des解密
最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式, 需要传入内容,密钥,初始化向量3个参数 var server = require('../../util ...
- 前端(Vue)sha512加密、后端(Java)sha512加密后加盐实现完整流程
搜索时发现sha512加密(加盐)的内容很少 所以过来添一块砖 文章目录 写在前面 一.理解一下SHA512加盐 二.前端项目实现SHA512加密 1.前端页面中引入js工具类 2.调用CryptoJ ...
最新文章
- 网络2网络布线与数制转换
- case when嵌套子查询_Oracle基础连接查询!!!
- 攻防世界web题ics-06(爆破id值)
- Linux 虚拟机配置-network is unreachable
- 如何判断两个矩形相交
- Java基础教程【第一章:Java概述】
- autojs遍历当前页面所有控件_解放双手,手机自动化神器-AutoJS的使用
- html 简单表格代码
- 交换机VLAN 模式trunk和access 区别
- Ajax的回调函数(js与JQuery写法)
- 免费的HTTP代理IP服务器地址
- 用云服务器架设好服务器显示无法连接
- html添加悬浮图片,HTML5和jQuery制作网页灰度图片悬浮效果_js
- ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
- Dynamic Head Unifying Object Detection Heads with Attentions 论文阅读笔记
- 《数字图像处理》手动实现最佳陷波滤波
- 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型
- SSD:单目多目标检测器
- java blueprint_OSGI Blueprint入门之四
- 全面解读信创行业 关注国产操作系统
热门文章
- 我们到底该转行Web全栈工程师吗?
- vue3.0 watch监听器使用方法
- 西域大都护府 第四期cfs靶场 渗透记录
- 麒麟信安天机存储加密系统——国家密码管理局商用密码认证产品
- python 的statsmodels包,计算Wald tests
- Opcode缓存介绍
- (转)双线性汇合(bilinear pooling)在细粒度图像分析及其他领域的进展综述
- OpenStack之八: network服务(端口9696)
- 【笔记本电脑连接真无线 jbl flash x耳机】pin 是 000000
- JavaWeb项目(登录注册页面)全过程详细总结