请认真看完这篇博客,下面的每一句话都可能让你少踩一个坑

1.安装

npm install crypto-js@3.3.0 --save-dev

这样是安装固定版本3.3.0的Des加密包,为什么这样安装呢?
因为你是用于小程序最新版本的会有问题出现下面的错误,这个模块来自浏览器,小程序没有这个模块

Native crypto module could not be used to get secure random number.


如果你是用于浏览器没有问题,你可以这样安装

npm install crypto-js --save-dev

**

2.写工具类(如果你不是和下面java相对应的请看 5)

在Vue 的目录下创建一个DES.js的文件,

这里是特殊的一种和java相对应

下面列出java的加密方式
**

//java
private void des(byte[] data, byte[] desKey) {try {SecretKey key = new SecretKeySpec(desKey, "DES");Cipher c1 = Cipher.getInstance("DES" + "/ECB/NoPadding");c1.init(Cipher.ENCRYPT_MODE, key);byte[] ret = c1.doFinal(data);} catch (Exception ignored) {ignored.printStackTrace();}}
//vueimport cryptoJs from 'crypto-js';//DES加密
export const encryptDes = (message, key) => {//这里根据自己的需求去选择那一种方式   我使用的是下面这俩种适合我的业务//message = cryptoJs.enc.Hex.parse(message)    //key = cryptoJs.enc.Hex.parse(key)           var keyHex = cryptoJs.enc.Utf8.parse(key)var option = {mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.NoPadding  //填充模式}var encrypted = cryptoJs.DES.encrypt(message, key, option)return encrypted.ciphertext.toString()
}//DES解密
export const decryptDes = (message, key) => {var keyHex = cryptoJs.enc.Utf8.parse(key)var decrypted = cryptoJs.DES.decrypt({ciphertext: cryptoJs.enc.Hex.parse(message)},keyHex,{mode: cryptoJs.mode.ECB,padding: cryptoJs.pad.NoPadding  //填充模式})return decrypted.toString(cryptoJs.enc.Utf8)
}

我自己在使用上面Des解密的时候 出现了

malformed utf-8 data

这个错误,所以我把解密方法改成下面这种

//DES解密
export const decryptDes = (message, key) => {var keyHex = cryptoJs.enc.Hex.parse(key)var decrypted = cryptoJs.DES.decrypt({ciphertext: cryptoJs.enc.Hex.parse(message)},keyHex, {mode: cryptoJs.mode.ECB,padding: cryptoJs.pad.NoPadding})return decrypted.toString()
}

3DES加解密:

只是单纯的把cryptoJs.DES 修改为cryptoJs.TripleDES 下面只放了一个3des加密的代码,解密和上面的同理 选择自己最合适的方式

//3Des加密
export const encrypt3Des = (message, key) => {message = cryptoJs.enc.Hex.parse(message)key = cryptoJs.enc.Hex.parse(key)var option = {mode: cryptoJs.mode.ECB,padding: cryptoJs.pad.NoPadding}var encrypted = cryptoJs.TripleDES.encrypt(message, key, option)return encrypted.ciphertext.toString()
}

3.在需要的地方引用

import {encryptDes,decryptDes,encrypt3Des,decrypt3Des} from "你工具类的路径"

4.调用

encryptDes("我这里放的是16进制的字符串需要加密的data","我这里放的是16进制的字符串key")

des加密的key有要求 必须是8的倍数位的 3des的是24位的(这里也是8的倍数但是不能是16位的)

这里我就不做测试了,大家自己测试就好

5.VUE的方式

//DES加密
export const encryptDes = (message, key) => {var keyHex = cryptoJs.enc.Utf8.parse(key);var encrypted = cryptoJs.DES.encrypt(message, keyHex, {mode: cryptoJs.mode.ECB,padding: cryptoJs.pad.NoPadding});return encrypted.ciphertext.toString();
}
//DES解密
export const decryptDes = (ciphertext, key) => {var keyHex = cryptoJs.enc.Utf8.parse(key);var decrypted = cryptoJs.DES.decrypt({ciphertext: cryptoJs.enc.Hex.parse(ciphertext)}, keyHex, {mode: cryptoJs.mode.ECB,padding: cryptoJs.pad.NoPadding});var result_value = decrypted.toString(cryptoJs.enc.Utf8);return result_value;
}

留一个疑问如果你问我3Des加密key16位可以吗?我说可以,那报错怎么办?请看下篇博客详解

vue的Des加密解密相关推荐

  1. getcoo php_PHP简单实现DES加密解密的方法

    本文实例讲述了PHP简单实现DES加密解密的方法.分享给大家供大家参考,具体如下: des加密: function des_encrypt($str, $key) { $block = mcrypt_ ...

  2. .net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密

    写项目时,后台一直用md5加密,一天群里人问,除了MD5还有其它的加密方法吗?当时只知道还有个SHA,但怎么实现什么的都不清楚,于是当网上找了下,把几种常见的加密方法都整理了下,用winform写了个 ...

  3. python des解密_python实现DES加密解密方法实例详解

    本文实例讲述了python实现DES加密解密方法.分享给大家供大家参考.具体分析如下: 实现功能:加密中文等字符串 密钥与明文可以不等长 这里只贴代码,加密过程可以自己百度,此处python代码没有优 ...

  4. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  5. DES加密解密算法Java实现

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...

  6. DES加密解密与AES加密解密

    × 目录 [1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码 随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了 ...

  7. 转载并学习实现三重DES加密解密代码(一)

    作者:finallyliuyu 出处:博客园 声明:此篇博文代码来自于邹德强先生.由于目前找到的版本是残缺版,所以我又进行了补全.读一份好代码,可以领略到作者的编程风格和语言驾驭能力,同时又能从其中汲 ...

  8. java des加密类_java的DES加密解密辅助类

    java的DES加密解密辅助类 package temptest; import java.io.IOException; import java.io.UnsupportedEncodingExce ...

  9. 在Java中使用DES加密解密算法

    import javax.crypto.*; import javax.crypto.spec.DESKeySpec; import java.security.NoSuchAlgorithmExce ...

  10. DES加密解密算法(前端后端)

    DES加密解密算法(前端&后端) 原作者 阿弥陀佛1114  原文链接:https://blog.csdn.net/zong1114/article/details/51754470 DES对 ...

最新文章

  1. React和vue的差异和相似地方
  2. KAFKA SpringBoot2 Nacos 消息异步发送和消费消息(进阶篇)
  3. php图片长宽处理,用php调整图片宽高 | 学步园
  4. OpenCV辅助对象(help objects)(5)_DataType
  5. 【浙江大学PAT真题练习乙级】1002 写出这个数(20分) 真题解析
  6. redis 获取类似key的所i有的值_高可用 Redis 分布式锁实施方案!
  7. 高通IPQ5018,QSDK V11.5版本手动编译指南-64位
  8. XML 教程(一文彻底搞懂XML)
  9. 网络协议抓包分析与爬虫入门
  10. Linux下Firefox和chrome浏览器flash插件的安装
  11. 每日工作记录——ERROR:Simulator:793 - Unable to elaborate instantiated module work
  12. 提取mdx字典文件中的数据
  13. 使用Qt开发的优秀软件汇总
  14. Python ffmpeg视频处理
  15. 计算机视觉传达论文库,计算机图形视觉传达论文
  16. 微机原理与接口技术复习笔记(1)——微型计算机概述
  17. Scrapy第十五篇:后起之秀-Playwright
  18. 超详细零信任市场解读
  19. [非原子批处理出现故障]使用 getNextException() 来检索已经过批处理的特定元素的异常。 ERRORCODE=-4228, SQLSTATE=null
  20. Android Activity 启动模式详解

热门文章

  1. 使用laravel框架创建todos
  2. 如何在Mac设置开机自启程序项,教程在这!
  3. 物理专业英语词汇(H-N)
  4. 离散分布的分布函数_条件分布与条件期望
  5. nginx php-fpm 根目录,缓存 – Nginx和/或php5-fpm会记住符号链接的根目录
  6. U盘写保护,不能被格式化
  7. AtCoder从小白到大神的进阶攻略
  8. Word中无法插入公式的解决方案
  9. 【Java 8 新特性】使用Collectors.toList()方法将Map转化成List的示例
  10. Installshield如何实现升级覆盖文件