后端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相关推荐

  1. java des解密乱码_des解密不完整,前面几位是乱码的解决办法

    在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码.废了半天劲,终于找到了问题所在. 下面先介绍一下des,了解des的同学可以直接看下面的解决办法. ...

  2. 前端vue后端java,Vue调用后端java接口的实例代码_亦心_前端开发者

    前段时间 做了个学校的春萌项目,其中用到 先上后端接口代码: package controller; import net.sf.json.JSONObject; import util.DBUtil ...

  3. 前端DES加密、base64编码,后端DES解密、base64解码

    项目场景: 在系统开发的过程中有的时候,我们为了数据的安全性会把前端的数据进行加密,然后再在后端程序中对加密数据进行解密或解密,今天我们就在这里说2种简单的方法(DES加密.base64编码) 具体实 ...

  4. 前端使用CryptoJS加密解密

    VUE中使用CryptoJS,安装并且引入,百度搜索下,这里主要讲怎么加密解密 import CryptoJS from "crypto-js"; //DES加密 /*** DES ...

  5. CryptoJS v3.1.2 源码自取

    CryptoJS 官方地址:https://github.com/sytelus/CryptoJS 源码自取: 新建文件 crypto.js /* CryptoJS v3.1.2 code.googl ...

  6. 前端使用CryptoJS的AES解密,Java后端加密实现

    前端使用CryptoJS的AES解密,Java后端加密实现.CryptoJS的AES输出使用的是openssl格式,所以处理起来有一些不一样,详细代码如下: import org.bouncycast ...

  7. 前端利用CryptoJS进行AES对称加解密(16进制编码)

    加密相关JS https://www.npmjs.com/package/crypto-js 引入JS 使用示例: =附上原文代码方便大家自由使用=========== //============= ...

  8. 微信小程序 php解密,微信小程序des加密、PHP des解密

    最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式, 需要传入内容,密钥,初始化向量3个参数 var server = require('../../util ...

  9. 前端(Vue)sha512加密、后端(Java)sha512加密后加盐实现完整流程

    搜索时发现sha512加密(加盐)的内容很少 所以过来添一块砖 文章目录 写在前面 一.理解一下SHA512加盐 二.前端项目实现SHA512加密 1.前端页面中引入js工具类 2.调用CryptoJ ...

最新文章

  1. 网络2网络布线与数制转换
  2. case when嵌套子查询_Oracle基础连接查询!!!
  3. 攻防世界web题ics-06(爆破id值)
  4. Linux 虚拟机配置-network is unreachable
  5. 如何判断两个矩形相交
  6. Java基础教程【第一章:Java概述】
  7. autojs遍历当前页面所有控件_解放双手,手机自动化神器-AutoJS的使用
  8. html 简单表格代码
  9. 交换机VLAN 模式trunk和access 区别
  10. Ajax的回调函数(js与JQuery写法)
  11. 免费的HTTP代理IP服务器地址
  12. 用云服务器架设好服务器显示无法连接
  13. html添加悬浮图片,HTML5和jQuery制作网页灰度图片悬浮效果_js
  14. ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
  15. Dynamic Head Unifying Object Detection Heads with Attentions 论文阅读笔记
  16. 《数字图像处理》手动实现最佳陷波滤波
  17. 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型
  18. SSD:单目多目标检测器
  19. java blueprint_OSGI Blueprint入门之四
  20. 全面解读信创行业 关注国产操作系统

热门文章

  1. 我们到底该转行Web全栈工程师吗?
  2. vue3.0 watch监听器使用方法
  3. 西域大都护府 第四期cfs靶场 渗透记录
  4. 麒麟信安天机存储加密系统——国家密码管理局商用密码认证产品
  5. python 的statsmodels包,计算Wald tests
  6. Opcode缓存介绍
  7. (转)双线性汇合(bilinear pooling)在细粒度图像分析及其他领域的进展综述
  8. OpenStack之八: network服务(端口9696)
  9. 【笔记本电脑连接真无线 jbl flash x耳机】pin 是 000000
  10. JavaWeb项目(登录注册页面)全过程详细总结