前端加密 后端Java解密
分享一下最简单的处理,前端采用JS自带的 atob加密,后端采用工具解密
前端JS代码
//加密字符串,可以先将中文加密,然后再用btoa加密encryption(str) {var encStr = encodeURIComponent(str);encStr = btoa(encStr);return encStr;},//解密,可以先将ascii解密,然后再将非ascii解密decrypt(str) {var decStr = atob(str);decStr = decodeURIComponent(decStr);return decStr;},
后端代码
package com.fudian.project.system.utils;import java.util.regex.Matcher;
import java.util.regex.Pattern;import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;/*** Window.atob 加解密* @author ZYGisComputer*/
public class BtoaEncode {public static void main(String[] args) {String admin = BtoaEncode.encryption("admin");System.out.println(admin);System.out.println(BtoaEncode.decrypt(admin));}private static String base64hash = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";public static boolean isMatcher(String inStr, String reg) {Pattern pattern = Pattern.compile(reg);Matcher matcher = pattern.matcher(inStr);if (matcher.matches()) {return true;}return false;}/*** btoa method* @param inStr* @return*/public static String btoa(String inStr) {if (inStr == null || isMatcher(inStr, "([^\\u0000-\\u00ff])")) {return null;}StringBuilder result = new StringBuilder();int i = 0;int mod = 0;int ascii;int prev = 0;while (i < inStr.length()) {ascii = inStr.charAt(i);mod = i % 3;switch (mod) {case 0:result.append(String.valueOf(base64hash.charAt(ascii >> 2)));break;case 1:result.append(String.valueOf(base64hash.charAt((prev & 3) << 4 | (ascii >> 4))));break;case 2:result.append(String.valueOf(base64hash.charAt((prev & 0x0f) << 2 | (ascii >> 6))));result.append(String.valueOf(base64hash.charAt(ascii & 0x3f)));break;}prev = ascii;i++;}if (mod == 0) {result.append(String.valueOf(base64hash.charAt((prev & 3) << 4)));result.append("==");} else if (mod == 1) {result.append(String.valueOf(base64hash.charAt((prev & 0x0f) << 2)));result.append("=");}return result.toString();}/*** atob method 逆转encode的思路即可* @param inStr* @return*/public static String atob(String inStr) {if (inStr == null)return null;inStr = inStr.replaceAll("\\s|=", "");StringBuilder result = new StringBuilder();int cur;int prev = -1;int mod;int i = 0;while (i < inStr.length()) {cur = base64hash.indexOf(inStr.charAt(i));mod = i % 4;switch (mod) {case 0:break;case 1:result.append(String.valueOf((char) (prev << 2 | cur >> 4)));break;case 2:result.append(String.valueOf((char) ((prev & 0x0f) << 4 | cur >> 2)));break;case 3:result.append(String.valueOf((char) ((prev & 3) << 6 | cur)));break;}prev = cur;i++;}return result.toString();}/*** 加密字符串* @return*/public static String encryption(String str) {String encode;try {encode = URLEncoder.encode(str,"utf-8");//URLEncoder.encode 会将空格解释为+号encode=encode.replaceAll("\\+", "%20");String btoa = BtoaEncode.btoa(encode);return btoa;} catch (UnsupportedEncodingException e) {System.out.println("btoa加密函数出现错误。");}return str;}/*** 解密字符串* @return*/public static String decrypt(String str) {String atob = BtoaEncode.atob(str);try {String decode = URLDecoder.decode(atob, "utf-8");return decode;} catch (UnsupportedEncodingException e) {System.out.println("atob加密函数出现错误。");}return str;}}
前端加密 后端Java解密相关推荐
- RSA--前端JS加密--后端JAVA解密
1.html代码另存为testRSA.html文档: 2.JSencryp.js代码另存为JSencryp.js,并在testRSA.html中引用: 3.使用RSAUtil.java类中的priva ...
- JS前端加密、JAVA后端解密详解
最近有一个加解密的需求,其实没有什么难度,但是实践过程中踩了很多坑,把踩坑过程分享出来. 1.前端JS加密 aesMinEncrypt: function(key, iv, word){var _wo ...
- java和js实现前端加密后端解密,后端加密前端解密(Base64)
目录 1.前端加密后端解密 2.后端加密前端解密 在前端和后端数据传输时,常常涉及到隐私数据的传输(例如用户名和密码),这时,我们就需要对隐私数据进行加密解密 1.前端加密后端解密 1.1 前端jqu ...
- RSA前端加密后端解密
前面说过接口数据在后端如何使用RSA加解密 这里遇到了使用RSA前端加密后端解密的需求. 实现方式如下: 1.后端的RSA工具 package com.ieslab.interactivequery. ...
- 国密SM2前端加密,Java后台解密问题
背景:要实现请求参数加密的功能,使用的是国密SM2算法,前端向后台发送请求获取公钥,将请求加密发送到后台,后台用对应的私钥进行解密 问题:前端进行加密的请求,后台无法进行解析 解决方案:(此处所用的类 ...
- JS前端加密和Java后端的AES加密和解密
先上前端代码 import cryptoJs from 'crypto-js' let keyOne = 'ZHyXgjF7BejeJySh5vX4O6qE'export default {//加密e ...
- rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式. 公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制) 前端: jsencrypt库加密 后端: Node ...
- 微信小程序获取手机号流程及后端java解密
在小程序开发中,获取微信用户绑定的手机号功能,详细可查看官方文档:微信官方文档 · 小程序 获取手机号 获取微信用户绑定的手机号,需先调用wx.login接口. 因为需要用户主动触发才能发起获取手机号 ...
- 一套通用的后台管理系统Base Admin 前端:layui 后端:java
简介: Base Admin一套简单通用的后台管理系统 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登 ...
最新文章
- C++学习笔记24,方法重写与方法隐藏
- 7 papers | NeurIPS 2019获奖论文;OpenAI刀塔2论文公布
- SpringMVC解决@ResponseBody返回乱码问题
- dim private public static_static方法 (静态方法)
- 2015-12-08 English
- 70% 产品经理都在考虑跳槽?还有哪些你不知道的行业真相
- 乐鑫代理启明云端分享|ESP32驱动1.54inch(240*240)彩屏
- 【Linux】一步一步学Linux——nice命令(127)
- Luogu1443 马的遍历【STL通俗BFS】
- Web应用中避免Form重复提交的三种方案
- Windows下Jenkins的详细安装及使用
- 如何把 Google adsense 的广告放到博客的Banner位置
- 56. SAMBA 服务器
- Hibernate 关联映射
- find ctime 加减n时间范围
- Webstorm克隆Git后npm install报错
- servlet原理详解
- linux下声卡配置文件,Linux设备配置之声卡配置
- ubuntu16安装liteide
- Unity_7 如何使用遮挡剔除Occlusion Culling