Web前后端笔记-vue cli及java进行AES加解密
这里我直接贴代码了。
vue cli中,要先导入
npm install crypto-js
vue代码如下:
import axios from 'axios'
import cryptoJS from "crypto-js/crypto-js";axios.defaults.timeout = 35 * 1000;/*** Get方法* @param {*} url* @param {*} params*/
export function fetch(url, params = {}) {return new Promise((resolve, reject) => {params['timestamp'] = new Date().getTime();let oriInfo = "";for (let key in params) {oriInfo += params[key] + "$";}let paraString = oriInfo.substr(0, oriInfo.length - 1);params['signature'] = this.$md5(paraString);let key = params['signature'].substring(0, 16);let shieldStr = encrypt(params['signature'], key)console.log("shield:" + shieldStr);console.log("origin:" + decrypt(shieldStr, key))params['shield'] = shieldStr;axios.get(url, {params: params}).then(response => {resolve(response);}).catch(err => {reject(err)})})
}export function post(url, data = {}) {return new Promise((resolve, reject) => {axios.post(url, data).then(response => {resolve(response);},err => {reject(err);})})
}//aes加密
export function encrypt(word, keyStr) {keyStr = keyStr ? keyStr : 'QWERTASDFGZXCVBN';let key = cryptoJS.enc.Utf8.parse(keyStr);let srcs = cryptoJS.enc.Utf8.parse(word);let encrypted = cryptoJS.AES.encrypt(srcs, key, {mode: cryptoJS.mode.ECB, padding: cryptoJS.pad.Pkcs7})return encrypted.toString();
}//aes解密
export function decrypt(word, keyStr) {keyStr = keyStr ? keyStr : 'QWERTASDFGZXCVBN';let key = cryptoJS.enc.Utf8.parse(keyStr);let decrypt = cryptoJS.AES.decrypt(word, key, {mode: cryptoJS.mode.ECB, padding: cryptoJS.pad.Pkcs7});return cryptoJS.enc.Utf8.stringify(decrypt).toString();
}
上面这个vue的,AES用的是signature前16位做的AES。
下面是java端:
public class AESUtil {public static String decrypt(String content, String key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException {//Key k = toKey(Base64.decodeBase64(key));Key k = toKey(key.getBytes());byte[] encoded = k.getEncoded();SecretKeySpec aes = new SecretKeySpec(encoded, "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, aes);byte[] bytes = cipher.doFinal(Base64.decodeBase64(content));return new String(bytes, "UTF-8");}public static String encrypt(String data, String key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, BadPaddingException, IllegalBlockSizeException {//Key k = toKey(Base64.decodeBase64(key));Key k = toKey(key.getBytes());byte[] encoded = k.getEncoded();SecretKeySpec aes = new SecretKeySpec(encoded, "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, aes);byte[] bytes = cipher.doFinal(data.getBytes("UTF-8"));return Base64.encodeBase64String(bytes);}private static Key toKey(byte[] key){SecretKeySpec aes = new SecretKeySpec(key, "AES");return aes;}}
这里前端数据加密或解析然后发给后端,加密或解析。
都是一样的,在此记录下,以后越到此问题直接拷代码。
Web前后端笔记-vue cli及java进行AES加解密相关推荐
- Web前后端笔记-vue封装http请求添加signature及后端(Java)解析并验证
首先帖下运行截图: 签名过期情况: 签名错误情况: 这里npm要导入js-md5,并且在main.js中添加 import md5 from 'js-md5' Vue.prototype.$md5 = ...
- Java使用AES加解密
Java使用AES加解密 目录 1.1生成密钥 1.2密钥的存储 1.3获取存储的密钥 1.4加解密 1.5使用存储的密钥进行加解密示例 AES是一种对称的加密算法,可基于相同的密钥进行加密和解密.J ...
- Java实现aes加解密
pom文件的依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <depe ...
- Java 实现 AES 加解密
毕业课题中需要使用加解密算法,要求加解密前后的数据长度不会变化,查了一些资料,发现可以采用AES加密的CFB跟OFB模式是无填充的模式,可以保持加解密前后数据的长度相等.下面上代码: import j ...
- Web前后端笔记-通过对称加密算法和信息摘要算法防止数据重放
理论图如下: 这里使用时间戳和随机数和正常提交的表单数据生成MD5摘要,再使用某16位密钥把MD5进行AES加密,生成128位的数据.然后提交给服务器. 服务器先看提交的时间戳是否在范围内(如2分钟) ...
- Java笔记-DH密钥交换获取密钥及AES加解密
DH密钥交换是这样的: 程序运行截图如下: D:\java8\content\bin\java.exe -javaagent:D:\idea\content\lib\idea_rt.jar=61009 ...
- Linux下运行java DES AES加解密
2019独角兽企业重金招聘Python工程师标准>>> DES java源代码如下: import java.security.InvalidKeyException; import ...
- 记一次Java AES 加解密 对应C# AES加解密 的一波三折
最近在跟三方对接 对方采用AES加解密 作为一个资深neter Ctrl CV 是我最大的优点 所以我义正言辞的问他们要了demo java demo代码: public class EncryptD ...
- 视频教程-Vue、Spring Boot开发小而完整的Web前后端分离项目实战-Java
Vue.Spring Boot开发小而完整的Web前后端分离项目实战 3年多.net开发经验:5年的java后端开发经验,熟悉行.net,java流行技术,拥有多个.net,java web企业级应; ...
最新文章
- Linux之bash shell基本命令
- 艾媒咨询:泛娱乐「体验共享」报告发布,网易云信多个案例领衔
- iphone如何信任软件_苹果企业开发者证书成漏洞 盗版商发布破解版iPhone应用
- python文件下载速度 装饰器_python使用装饰器对文件进行读写操作'及遍历文件目录...
- linux java url 异常_Java连接虚拟机(Linux)中的Oracle数据库,连接异常~新手求解!
- html5与access连接数据库操作,access是一个什么数据库?
- 安卓仿苹果键盘输入法_iphone输入法安卓版下载
- 类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD
- 高薪岗位大数据开发工程师要如何入门?【重磅】
- 2020最新版前端学习路线图--让前端学习变得美如画
- 与CPU相关的计算题
- GMT绘制子图、指北针、图例、比例尺
- 在word中通过endnote打入文献标签
- dat图片 电脑端微信_微信Dat文件解码,PC微信加密图片解密工具
- Android 曝光采集,商品view曝光量的统计,判断RecyclerView中某子view是否可见 view是否显示在屏幕中 view展示次数统计...
- vivo手机权限禁止--跳转至对应app的权限设置页面
- windows 前端工作环境搭建指北
- vue 公告栏组件
- Uber 公司推出的 GoLang 编程规范
- 核心转储文件的设置和查看