|
@@ -9,7 +9,14 @@ import java.security.PublicKey;
|
|
|
import java.security.Signature;
|
|
|
import java.security.spec.PKCS8EncodedKeySpec;
|
|
|
import java.security.spec.X509EncodedKeySpec;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneOffset;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import javax.crypto.Cipher;
|
|
|
+
|
|
|
+import cn.hutool.crypto.SecureUtil;
|
|
|
+import cn.hutool.crypto.asymmetric.KeyType;
|
|
|
+import cn.hutool.crypto.asymmetric.RSA;
|
|
|
import org.apache.commons.codec.binary.Base64;
|
|
|
|
|
|
public class RsaUtil {
|
|
@@ -164,30 +171,35 @@ public class RsaUtil {
|
|
|
return signature.verify(Base64.decodeBase64(sign.getBytes()));
|
|
|
}
|
|
|
|
|
|
-// public static void main(String[] args) {
|
|
|
-// try {
|
|
|
-// // 生成密钥对
|
|
|
-// KeyPair keyPair = getKeyPair();
|
|
|
-// String privateKey = new String(Base64.encodeBase64(keyPair.getPrivate().getEncoded()));
|
|
|
-// String publicKey = new String(Base64.encodeBase64(keyPair.getPublic().getEncoded()));
|
|
|
-// System.out.println("私钥:" + privateKey);
|
|
|
-// System.out.println("公钥:" + publicKey);
|
|
|
-// // RSA加密
|
|
|
-// String data = "待加密的文字内容";
|
|
|
-// String encryptData = encrypt(data, getPublicKey(publicKey));
|
|
|
-// System.out.println("加密后内容:" + encryptData);
|
|
|
-// // RSA解密
|
|
|
-// String decryptData = decrypt(encryptData, getPrivateKey(privateKey));
|
|
|
-// System.out.println("解密后内容:" + decryptData);
|
|
|
-//
|
|
|
-// // RSA签名
|
|
|
-// String sign = sign(data, getPrivateKey(privateKey));
|
|
|
-// // RSA验签
|
|
|
-// boolean result = verify(data, getPublicKey(publicKey), sign);
|
|
|
-// System.out.print("验签结果:" + result);
|
|
|
-// } catch (Exception e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// System.out.print("加解密异常");
|
|
|
-// }
|
|
|
-// }
|
|
|
+ public static void main(String[] args) {
|
|
|
+ LocalDateTime startDate = LocalDateTime.now();
|
|
|
+ LocalDateTime endDate = ChronoUnit.MINUTES.addTo(startDate, 1);
|
|
|
+ long startDateEpochMilli = startDate.toInstant(ZoneOffset.of("+8")).toEpochMilli();
|
|
|
+ long endDateEpochMilli = endDate.toInstant(ZoneOffset.of("+8")).toEpochMilli();
|
|
|
+ try {
|
|
|
+ // 生成密钥对
|
|
|
+ KeyPair keyPair = RsaUtil.getKeyPair();
|
|
|
+ String publicKey = new String(Base64.encodeBase64(keyPair.getPublic().getEncoded()));
|
|
|
+ String privateKey = new String(Base64.encodeBase64(keyPair.getPrivate().getEncoded()));
|
|
|
+ RSA rsa = SecureUtil.rsa(privateKey, publicKey);
|
|
|
+ String str = String.valueOf("123" + "," + startDateEpochMilli + "," + endDateEpochMilli);
|
|
|
+
|
|
|
+ System.out.println("私钥:" + privateKey);
|
|
|
+ System.out.println("公钥:" + publicKey);
|
|
|
+ // RSA加密
|
|
|
+ String secret = rsa.encryptBcd(str, KeyType.PublicKey);
|
|
|
+ System.out.println("加密后内容:" + secret);
|
|
|
+ // RSA解密
|
|
|
+ String strSecret = rsa.decryptStr(secret, KeyType.PrivateKey);
|
|
|
+ System.out.println("解密后内容:" + strSecret);
|
|
|
+ // RSA签名
|
|
|
+ String sign = RsaUtil.sign(secret, RsaUtil.getPrivateKey(privateKey));
|
|
|
+ // RSA验签
|
|
|
+ boolean result = RsaUtil.verify(secret, RsaUtil.getPublicKey(publicKey), sign);
|
|
|
+ System.out.print("验签结果:" + result);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ System.out.print("加解密异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|