分享一下最简单的处理,前端采用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解密相关推荐

  1. RSA--前端JS加密--后端JAVA解密

    1.html代码另存为testRSA.html文档: 2.JSencryp.js代码另存为JSencryp.js,并在testRSA.html中引用: 3.使用RSAUtil.java类中的priva ...

  2. JS前端加密、JAVA后端解密详解

    最近有一个加解密的需求,其实没有什么难度,但是实践过程中踩了很多坑,把踩坑过程分享出来. 1.前端JS加密 aesMinEncrypt: function(key, iv, word){var _wo ...

  3. java和js实现前端加密后端解密,后端加密前端解密(Base64)

    目录 1.前端加密后端解密 2.后端加密前端解密 在前端和后端数据传输时,常常涉及到隐私数据的传输(例如用户名和密码),这时,我们就需要对隐私数据进行加密解密 1.前端加密后端解密 1.1 前端jqu ...

  4. RSA前端加密后端解密

    前面说过接口数据在后端如何使用RSA加解密 这里遇到了使用RSA前端加密后端解密的需求. 实现方式如下: 1.后端的RSA工具 package com.ieslab.interactivequery. ...

  5. 国密SM2前端加密,Java后台解密问题

    背景:要实现请求参数加密的功能,使用的是国密SM2算法,前端向后台发送请求获取公钥,将请求加密发送到后台,后台用对应的私钥进行解密 问题:前端进行加密的请求,后台无法进行解析 解决方案:(此处所用的类 ...

  6. JS前端加密和Java后端的AES加密和解密

    先上前端代码 import cryptoJs from 'crypto-js' let keyOne = 'ZHyXgjF7BejeJySh5vX4O6qE'export default {//加密e ...

  7. rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密

    项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式. 公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制) 前端: jsencrypt库加密 后端: Node ...

  8. 微信小程序获取手机号流程及后端java解密

    在小程序开发中,获取微信用户绑定的手机号功能,详细可查看官方文档:微信官方文档 · 小程序 获取手机号 获取微信用户绑定的手机号,需先调用wx.login接口. 因为需要用户主动触发才能发起获取手机号 ...

  9. 一套通用的后台管理系统Base Admin 前端:layui 后端:java

    简介: Base Admin一套简单通用的后台管理系统 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登 ...

最新文章

  1. C++学习笔记24,方法重写与方法隐藏
  2. 7 papers | NeurIPS 2019获奖论文;OpenAI刀塔2论文公布
  3. SpringMVC解决@ResponseBody返回乱码问题
  4. dim private public static_static方法 (静态方法)
  5. 2015-12-08 English
  6. 70% 产品经理都在考虑跳槽?还有哪些你不知道的行业真相
  7. 乐鑫代理启明云端分享|ESP32驱动1.54inch(240*240)彩屏
  8. 【Linux】一步一步学Linux——nice命令(127)
  9. Luogu1443 马的遍历【STL通俗BFS】
  10. Web应用中避免Form重复提交的三种方案
  11. Windows下Jenkins的详细安装及使用
  12. 如何把 Google adsense 的广告放到博客的Banner位置
  13. 56. SAMBA 服务器
  14. Hibernate 关联映射
  15. find ctime 加减n时间范围
  16. Webstorm克隆Git后npm install报错
  17. servlet原理详解
  18. linux下声卡配置文件,Linux设备配置之声卡配置
  19. ubuntu16安装liteide
  20. Unity_7 如何使用遮挡剔除Occlusion Culling

热门文章

  1. 详细解说Windows 8.1与Windows 8的区别(Win8.1与Win8区别)
  2. 树莓派应用:无线扫描仪
  3. 《运营之光3.0》全新上市——跨越时代,自我颠覆的诚意之作
  4. 约瑟夫环(数三退一)
  5. vue中引用高德地图根据经纬度计算两地距离
  6. 永远保持一颗奋斗的心
  7. UML图 符号的含义
  8. 带你读懂——频率响应与采样频率之间的关系
  9. CSS总结---持续更新中 2022.8.4
  10. 新手建站之【域名解析】⑦