package com.util;
import sviolet.smcrypto.SmCryptoUtil;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SM2Utils {
//当前系统时间 key
public static final String DEFAULT_SM4_SECRET_KEY = System.currentTimeMillis()+"123456";
public static Boolean toSM2Str(String token) {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
String date = df.format(new Date());
String appMark = "SM2";
String DEFAULT_SM4_SECRET_KEY = date+appMark+"123456";
try {
Map<String, Object> map = SmCryptoUtil.createSm2KeyMap();
String pubKey2 = "045aefbb8712feef0ac9fa7dea5de4e136d43f9a7154022194ec15b898d287e558aebfdb6f61fc02733edff70d442a35339af6549249fc9e15ba459d1e4678f7f3";
String priKey2 = "6712bf9bdb17f42165181618c4ea3f7db66c6d2ec89c2ad1c4c8f8b052439b75";
System.out.println(DEFAULT_SM4_SECRET_KEY);
//公钥 加密
String encryptStr = SmCryptoUtil.sm2Encode(DEFAULT_SM4_SECRET_KEY, pubKey2);
System.out.println("生成的秘钥:"+encryptStr);
//私钥解密
String decryptStr = SmCryptoUtil.sm2Decode(token, priKey2);
System.out.println("jiemi=="+decryptStr);
String[] temp = decryptStr.split("SM2");
String regex = "^[0-9]*$";
// "^\\d{4}([0][1-9]|(1[0-2]))([1-9]|([012]\\d)|(3[01]))(([0-1]{1}[0-9]{1})|([2]{1}[0-4]{1}))(([0-5]{1}[0-9]{1}|[6]{1}[0]{1}))((([0-5]{1}[0-9]{1}|[6]{1}[0]{1})))$\n";
Pattern imgPattern = Pattern.compile(regex);
Matcher imgMatcher = imgPattern.matcher(temp[0]);
//正则判断是否为数据
if (imgMatcher.matches() && "123456".equals(temp[1])) {
//判断解密出来的数据是否在一分钟内
// if(decryptStr.substring(0,12).equals(date.substring(0,12))){
// System.out.println("解密的数据在一分钟内");
return true;
// }
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
String date = df.format(new Date());
System.out.println(date.length());
long t4=System.currentTimeMillis();
String key =t4+"123456";
toSM2Str("");
// System.out.println(new Date().getTime());//1622168983585123456
}
}
SM2加密解密
最新推荐文章于 2025-04-11 11:04:19 发布