当前位置: 首页 > news >正文

简单数据加解密,JS和JAVA同时实现

前端Vue调用Java后端接口中的数据进行加密,以避免敏感数据泄露。

现在实现一个高性能加密方法,用来对数据进行加密后传输。算法包括JS的加密和解密方法,也包括Java的加密解密方法。

可以在前端加密,后端解密。也可以在后端加密,前端解密。

JS代码如下

import { Base64 } from 'js-base64';
import md5 from 'js-md5';let md5Key = md5('sucwjkey');
function xor(data)
{if (typeof data !== 'string') {return data;}let result = '';for (var i = 0; i < data.length; i++) {var k = i % 32;result += String.fromCharCode(data.charCodeAt(i) ^ md5Key.charCodeAt(k));}return result;
}function enc(data)
{data = Base64.encode(data);data = xor(data);return Base64.encode(data);
}
function dec(data)
{data = Base64.decode(data);data = xor(data);return Base64.decode(data);
}let data = "[{'name':'test',;!.测试一下}]";
console.log('data is')
console.log('原始数据:'+data)
console.log('加密后:'+enc(data))
console.log('解密后:'+dec(enc(data)))

输出如下:

ae9e14e37df94b878a377f459174baa2.png

JAVA代码如下:

import java.nio.charset.StandardCharsets;
import java.util.Base64;public class EncryptUtils {public static void main(String[] args) {、String data = "[{'name':cwj,;!.测试一下}]";System.out.println("data is");System.out.println("原始数据:" + data);System.out.println("加密后:" + enc(data));System.out.println("解密后:" + dec(enc(data)));}//解密public static String dec(String data) {return base64Decode(xordata(base64Decode(data)));}//加密public static String enc(String data) {return base64Encode(xordata(base64Encode(data)));}private static String base64Encode(String data) {return Base64.getEncoder().encodeToString(data.getBytes(StandardCharsets.UTF_8));}private static String base64Decode(String data) {return new String(Base64.getDecoder().decode(data));}private static String xordata(String data) {String key = "9722756041bf30025cbff04b515e76bd";byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8);byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);StringBuilder encryptedData = new StringBuilder();for (int i = 0; i < dataBytes.length; i++) {int k = i % keyBytes.length;encryptedData.append((char) (dataBytes[i] ^ keyBytes[k]));}return encryptedData.toString();}}

运行结果如下

70936498d1b84433ab76365512d5ed3f.png

http://www.lryc.cn/news/342701.html

相关文章:

  • Android Framework中PackageManagerService的深度剖析
  • (AI Web、ChatGPT Native、Ai Loading、AI Tools、知豆AI)
  • VBA 批量处理Excel文件
  • PG实例连接访问控制
  • 2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录
  • C++设计模式-创建型设计模式
  • code-server容器webpack的ws无法连接解决方法
  • leetcode47-Permutations II
  • 246 基于matlab的交流电机动态方程
  • 7天入门Android开发之第2天——四大组件之活动
  • 自然语言(NLP)
  • 学习java第六十天
  • OpenFeign修改HttpClient为Apache HttpClient 5
  • 【busybox记录】【shell指令】comm
  • 工作中遇到的问题,如何解决的
  • 数据结构(c):队列
  • Vue单页面应用和多页面应用的区别
  • php扩展
  • mac电脑如何安装python及环境搭建
  • 大数据高级阶段面试题(实时)
  • Material Studio 计算分子静电力、电荷密度以及差分电荷密度
  • 华为鸿蒙系统(Huawei HarmonyOS)
  • docker jenkins 部署springboot项目
  • 记录一个练手的js逆向password
  • 如何低成本创建个人网站?
  • Finder Windows for Mac:双系统窗口,一键切换!
  • Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)
  • yolo-world:”目标检测届大模型“
  • vue3 + ts 快速入门(全)
  • vue2实现面包屑功能