首页 > 编程语言 >纯JS加密+时间校验(没引用任何框架),Java解密

纯JS加密+时间校验(没引用任何框架),Java解密

时间:2024-12-26 16:19:32浏览次数:4  
标签:encryptedText Java String decryptedText shift 校验 JS return 加密

1、JS加密

function caesarEncrypt(text, shift) {
	let str = "G7bCk1Xf2A9qLmJ0pVrTz5D4oS6wEhN" + Date.now().toString();
	return str.split('')
	.map(char => String.fromCharCode(char.charCodeAt(0) + 3))
	.join('');
} 

2、Java校验 verify

package com.bak.util;

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class CaesarCipherUtil {

    private static  String key = "G7bCk1Xf2A9qLmJ0pVrTz5D4oS6wEhN";
    // 解密函数,类似于加密,只是 shift 应该取反
    public static String caesarDecrypt(String encryptedText, int shift) {
        StringBuilder decryptedText = new StringBuilder();

        // 遍历每个字符,进行解密
        for (int i = 0; i < encryptedText.length(); i++) {
            char ch = encryptedText.charAt(i);
            // 通过将字符的 ASCII 码减去 shift 来解密
            decryptedText.append((char) (ch - shift));
        }

        return decryptedText.toString();
    }

    // 加密函数
    public static String caesarEncrypt(String text, int shift) {
        StringBuilder encryptedText = new StringBuilder();

        // 遍历每个字符,进行加密
        for (int i = 0; i < text.length(); i++) {
            char ch = text.charAt(i);
            // 通过将字符的 ASCII 码加上 shift 来加密
            encryptedText.append((char) (ch + shift));
        }

        return encryptedText.toString();
    }

    public static String verify(String token){
        String decryptedText = caesarDecrypt(token,3);
        if(!decryptedText.startsWith(key)){
            return "校验不通过!";
        }else{
            Long timestamp = Long.valueOf(decryptedText.substring(32));
            // 将时间戳转换为 LocalDateTime
            LocalDateTime time = Instant.ofEpochSecond(timestamp)
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime();
            // 获取当前时间
            LocalDateTime now = LocalDateTime.now();
            // 计算时间差
            Duration duration = Duration.between(time, now);
            // 判断时间差是否超过5分钟
            if (duration.toMinutes() > 5) {
                return "时间超出5分钟!";
            }
        }
        return null;
    }
    public static void main(String[] args) {
        // 示例:凯撒密码加密和解密
        String originalText = "Hello, World!";
        int shift = 3;  // 假设加密时使用了 shift 为 3

        // 加密文本
        String encryptedText = caesarEncrypt(originalText, shift);
        System.out.println("Encrypted Text: " + encryptedText);

        // 解密文本
        String decryptedText = caesarDecrypt(encryptedText, shift);
        System.out.println("Decrypted Text: " + decryptedText);
    }

}

  

 

标签:encryptedText,Java,String,decryptedText,shift,校验,JS,return,加密
From: https://www.cnblogs.com/wwssgg/p/18633343

相关文章

  • node.js基于智能算法的健康食材订购系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于健康食材订购系统的研究,现有研究主要以传统的食材订购模式或单一功能的食材相关系统为主,专门针对基于智能算法的健康食材订购系统的研究较少。在国......
  • node.js毕设 宠物服务一体化系统的设计与实现 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于宠物服务一体化系统的研究,现有研究多侧重于宠物服务的某一单独环节,如宠物医疗管理或者宠物交易管理等方面,专门针对将多种宠物服务功能集成于一体的......
  • 前端js实现计算请假时长
    接到一个需求,要完成计算请假时长(需要去掉法定节假日和周末,然后还要去掉午休时间,还要按照各种请假类型来判断,有些不需要去掉节假日和周末,懂的都懂),以2025年的法定节假日为例,上代码不包含法定节假日和周末,哦对了还要加上调休(可恶的调休)//定义2025年的法定节假日和调休日const......
  • vue关闭eslint校验及开启debugger
    文章目录在Vue项目中关闭ESLint检查,可以通过以下几种方式实现:修改package.json文件中的eslintScript,将其设置为空字符串或者直接删除。在项目根目录下创建.eslintrc.js文件,并设置rules为关闭所有规则。如果使用VueCLI创建的项目,可以在vue.config.js文件中配置,关闭lintOn......
  • Java重要面试名词整理(五):Redis
    文章目录Redis高级命令Redis持久化RDB快照(snapshot)**AOF(append-onlyfile)****Redis4.0混合持久化**管道(Pipeline)**StringRedisTemplate与RedisTemplate详解**Redis集群方案gossip脑裂RedisLuaRedisMultiLockRedis红锁缓存相关问题**缓存穿透****缓存失效(击穿)****......
  • quietflow.js-jquery背景层动画插件
    quietflow.js是一款可以制作炫酷页面背景层动画效果的jquery插件。该jquery插件内置了9种不同效果的背景层动画,你可以为页面轻松的添加背景动画效果。可用的背景层动画效果有:squareFlashvortexbouncingBallsshootingLinessimpleGradientstarfieldlayeredTrianglescorner......
  • Next.js 14 部署运维:从开发到生产的最佳实践
    在完成Next.js14应用的开发后,如何将其高效地部署到生产环境并进行可靠的运维管理是一个关键问题。本文将详细介绍Next.js14的部署策略和运维最佳实践。部署准备工作1.环境配置管理//next.config.js/**@type{import('next').NextConfig}*/constnextConfig=......
  • Next.js 14 性能优化:从首屏加载到运行时优化的最佳实践
    在现代Web应用中,性能优化直接影响用户体验和业务转化。Next.js14提供了多种内置的性能优化特性,今天我们就来深入探讨如何充分利用这些特性,以及一些实用的优化技巧。图片和字体优化1.图片优化Next.js的Image组件供了强大的图片优化功能://components/OptimizedIm......
  • Next.js 14 基础入门:从项目搭建到核心概念
    Next.js14带来了许多激动人心的新特性,包括局部渲染、ServerActions增强等。作为一名前端开发者,我最近在项目中升级到了Next.js14,今天就来分享一下从项目搭建到实际应用的完整过程。项目初始化首先,让我们创建一个全新的Next.js14项目:#使用create-next-app创建......
  • 学习threejs,THREE.RingGeometry 二维平面圆环几何体
    ......