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 ...
随机推荐
- 8.1 C++ 标准输入输出流
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- Metasploit 生成各种后门
Metasploit 是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,同时该工具也是渗透测试环境中的利器,它支持多平台Payload的生成具有完全的跨平台性 ...
- nginx适配thinkphp3.2.3
环境 centos7.9 nginx1.23.2 thinkphp3.2.3 PHP7.4.30 配置 配置nginx 默认位置在/usr/local/nginx/conf/nginx.conf主要配 ...
- 路由react-router-dom的使用
react-router-dom路由简介 现代的前端页面大多是SPA(单页面应用程序), 也就是只有一个HTML页面的程序,这样用户体验好,服务器压力小,所以更受欢迎.路由是使用单页面来管理原来多页面 ...
- 小知识:Exadata平台去掉密码输错延迟10分钟登录
生产环境不评价,若是测试环境实在受不了偶尔一次因为密码输错就要等待10分钟才能登陆的限制. 那测试环境下,如何关闭这个限制呢?很简单: # vi /etc/pam.d/sshd --找到并注释掉下面这 ...
- 《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(上)
第 3 章 ASP.NET Core 核心特性 3.1 启动与宿主 ASP.NET Core 应用程序启动时,它首先会配置并运行其宿主,宿主主要用来启动.初始化应用程序,并管理其生命周期 ASP.NE ...
- JS Leetcode 278. 第一个错误的版本 题解分析
壹 ❀ 引 本题来自LeetCode的278. 第一个错误的版本,难度简单,端午节就应该做点容易的题目缓解心情,题目描述如下: 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新 ...
- Dubbo本地调试方法
方法一:用版本号来区分 比如,开发环境上跑的服务版本是1.0.0,那么为了在本地打断点调试某个服务,可以在本地启动,将version设置为2.0.0 服务提供者 @DubboService(versi ...
- Vue+SpringBoot+ElementUI实战学生管理系统-6.院系管理模块
1.章节介绍 前一篇介绍了用户管理模块,这一篇编写院系管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 院系列表 修改院系 4.模块 ...
- 从零开始写 Docker(一)---实现 mydocker run 命令
本文为从零开始写 Docker 系列第一篇,主要实现 mydocker run 命令,构造了一个具有基本的 Namespace 隔离的简单容器. 如果你对云原生技术充满好奇,想要深入了解更多相关的文章 ...