纯JS加密+时间校验(没引用任何框架),Java解密
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);
}
}

浙公网安备 33010602011771号