crypto-js DES加密 base64 post传输
演示地址:
http://pengchenggang.gitee.io/crypto-js-des/
开源地址:
https://gitee.com/pengchenggang/crypto-js-des
需求: 前后台进行加密传输
建立个vue3的项目,进行测试crypto-js
为了演示方便 再装个 element-plus
vue create des-study
npm install crypto-js --save
npm install element-plus --save
坑点1:加密配置项 主要是和java后台配合 ECB pkcs7padding key base64 utf8 (注意这里的base64 里面是含有+号的,post传输会丢失,要再进行一次base64的单独编码)
坑点2:key就前8位 有作用,我估计可能跟iv有关系
上代码
src\App.vue
<template>
<div id="app-des">
<el-card class="box-card">
app-des-study-base64
</el-card>
<el-row :gutter="10">
<el-col :span="10">
<el-input type="textarea"
:rows="13"
placeholder="请输入内容"
v-model="leftValueBase64">
</el-input>
</el-col>
<el-col :span="4"
style="text-align:center;">
<div style="height:10px;"></div>
<el-button type="primary"
@click="encryptHandleBase64">encryptBase64</el-button>
<div style="height:10px;"></div>
<el-button type="primary"
@click="decryptHandleBase64">decryptBase64</el-button>
</el-col>
<el-col :span="10">
<el-input type="textarea"
:rows="13"
placeholder="请输入内容"
v-model="rightValueBase64">
</el-input>
</el-col>
</el-row>
<div style="height:10px;"></div>
<el-card class="box-card">
<template #header>
<div class="clearfix">
<span>interpretative statement</span>
</div>
</template>
<div>
<div>需求:用DES的方式进行加密解密,通过post进行传参</div>
<div>方案:crypto-js 进行DES加密 Pkcs7 Utf8 和密码进行加密,初始java后台用Pkcs5,后经讨论Pkcs7也是ok的。最后加一个密码</div>
</div>
</el-card>
</div>
</template>
<script>
import * as CryptoDES from './crypto-js-des'
export default {
name: 'App',
setup () {
},
data () {
return {
leftValueBase64: '',
rightValueBase64: '',
}
},
methods: {
encryptHandleBase64 () {
this.rightValueBase64 = CryptoDES.encryptByBase64DES(this.leftValueBase64)
},
decryptHandleBase64 () {
this.leftValueBase64 = CryptoDES.decryptByBase64DES(this.rightValueBase64)
}
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
margin-top: 10px;
}
.box-card {
margin-bottom: 10px;
}
</style>
src\crypto-js-des.js
import CryptoJS from "crypto-js";
const key = 'yourKeyStr' // The first 8 passwords are valid
//DES 加密
function encryptByDES (message) {
const keyHex = CryptoJS.enc.Utf8.parse(key);
const encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}
//DES 解密
function decryptByDES (ciphertext) {
const keyHex = CryptoJS.enc.Utf8.parse(key);
const decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
function strToBase64 (rawStr) {
const wordArray = CryptoJS.enc.Utf8.parse(rawStr);
const base64 = CryptoJS.enc.Base64.stringify(wordArray);
return base64
}
function base64ToStr (base64) {
const parsedWordArray = CryptoJS.enc.Base64.parse(base64);
const parsedStr = parsedWordArray.toString(CryptoJS.enc.Utf8);
return parsedStr
}
export function encryptByBase64DES (paramStr) {
const des = encryptByDES(paramStr)
return strToBase64(des)
}
export function decryptByBase64DES (base64Str) {
const str = base64ToStr(base64Str)
return decryptByDES(str)
}
crypto-js DES加密 base64 post传输的更多相关文章
- 前端使用crypto.js进行加密
前端使用crypto.js进行加密 https://www.cnblogs.com/lz2017/p/8046816.html 最近我在前端使用Cookies保存密码的时候需要前端来进行加密工作, ...
- Node.js des加密
常见的加密算法基本分为这几类,1 :线性散列算法.2:对称性加密算法.3.非对称性加密算法 (记记记) 线性散列算法(签名算法):MD5,SHA1,HMAC比如MD5:即Message-Digest ...
- DES 加密
package com.cloudunicomm.utils; import java.io.UnsupportedEncodingException; import java.security.Se ...
- JAVA实现DES加密实现详解
package util; import java.security.SecureRandom; import javax.crypto.spec.DESKeySpec; import javax.c ...
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作
分享一个非常不错的字符串加密和解密的程序. 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. Java代码如下: package com.app; import java.securi ...
- 【Java】JAVA-加密-DES加密代码详解
package util; import java.security.SecureRandom; import javax.crypto.spec.DESKeySpec; import javax.c ...
- C# 中用DES 对称Key,IV 加密,前端crypto.js 解密
1.服务器端代码 #region ========加密======== /// <summary> /// 加密 /// </summary> /// <param na ...
- js 加密 crypto-js des加密
js 加密 crypto-js https://www.npmjs.com/package/crypto-js DES 举例: js 引入: <script src=&quo ...
- JavaScript DES 加密tripledes.js:
<html> <head> <meta http-equiv="content-type" content="text/html; char ...
- AES,DES加密JS源文件及其使用方法
源文件地址:https://github.com/dididi1234/crypto 进入之后直接下载CryptoJS.js,js中直接引用,小程序也一样可以使用 具体使用方法和vue中的Crypto ...
随机推荐
- spark读取空orc文件时报错java.lang.RuntimeException: serious problem at OrcInputFormat.generateSplitsInfo
问题复现: G:\bigdata\spark-2.3.3-bin-hadoop2.7\bin>spark-shell 2020-12-26 10:20:48 WARN NativeCodeLoa ...
- PCIe Gen 4 SSD主控大盘点:7000MB/s高速时代,到底谁能称王?
[硬件编年史]自2006年世界上第一款搭载固态硬盘的电脑诞生之后,消费级SSD经过十几年的发展,从一开始的SATA 6Gbps SSD,到坚挺了十年的PCIe Gen 3 SSD,再到PCIe Gen ...
- 一个 WPF + MudBlazor 的项目模板(附:多项目模板制作方法)
最近做了几个 WPF + MudBlazor 的小东西,每次从头搭建环境比较繁琐,然鹅搭建过程还没啥技术含量,索性就直接做了个模板,方便以后使用. 1. 介绍 一个用来创建 .NET 8 + WPF ...
- 【Linux】虚拟机太卡咋办?用云服务器Xshell配置Vmware虚拟机【技能篇】
[Linux]用云服务器Xshell配置Vmware虚拟机[技能篇] 强烈建议本篇收藏后再食用~ 文章目录 Xshell下载 配置Vmware 尾声 平时我们使用虚拟机,可能最烦人的问题就是卡顿了.今 ...
- Linux中单引号和双引号的区别
区别:单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用:而双引号属于弱引用,它会对一些被引起来的字符进行特殊处理.简单来说,单引号直接输出内部字符串,不解析特 ...
- 好书推荐之《深入理解JAVA虚拟机》
大佬推进 这本书作为JVM的入门书籍,是每一个JAVA工程师必备的. 简介 这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎. 自2011年上市 ...
- 从零开始的 dbt 入门教程 (dbt core 开发进阶篇)
引 在上一篇文章中,我们花了专门的篇幅介绍了 dbt 更多实用的命令,那么我们继续按照之前的约定来聊 dbt 中你可能会遇到的疑惑以及有用的概念,如果你是 dbt 初学者,我相信如下知识点一定会对你有 ...
- 计网学习笔记十 Internet Routing Protocols
上一讲简单介绍了routing和两种最小路径算法的使用,这节课讲了两种算法是如何糅合进协议中来实现具体使用的. 这一讲内容有AS的介绍,以及IGP和BGP协议. Autonomous Systems ...
- NC16645 [NOIP2007]矩阵取数游戏
题目链接 题目 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵 ...
- NC21467 [NOIP2018]货币系统
题目链接 题目 题目描述 在网友的国度中共有n种不同面额的货币,第i种货币的面额为a[i],你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为n.面额数组为a[1..n]的货币系统记作(n, ...