init: 简单的验证授权

This commit is contained in:
2025-08-26 17:38:24 +08:00
commit 4350a3894d
13 changed files with 369 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
package org.nl;
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
/**
* @Author: lyd
* @Date: 2025/8/13
*/
public class GenerateAuthCode {
public static void main(String[] args) throws Exception {
String publicKeyBase64 = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgW1kN/JmXZjl9+/Zsl/zRZ/6hSHj95G6IA4lpRrXNSTbeng0rDhEoVDY96PCaOUGnqcqOo+LLT+FqZggFBbHcjqHc1NEetD+4BTkdTiHSsskNjkvSdTHTV0UbpLHw9VlRvms6AfobkKNg+dm3F0o57tVA0Q61zd112YIdS9lf2g4PhovUACLDAx7TetsyrB7OLZQpR7dCjkUnQMTfUYz81BTWF38Vt3TUzPc35baDNm4HlHxutReRDIqZABFYw2+Pj7tgbDVGpo8vOXig1gPDcQ1Orrg5MSzYi8eSoqS8TkfhDOP3DqkcB3RI/JmraRpagUjnzsV3ekoeV5lUrQY7QIDAQAB"; // 从生成器中获取
String expirationDate = "2025-12-31"; // 到期时间原文
// 还原公钥
byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyBase64);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
// 加密
// Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // 标准填充模式
Cipher cipher = Cipher.getInstance("RSA"); // 标准填充模式
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encrypted = cipher.doFinal(expirationDate.getBytes("UTF-8"));
String authCode = Base64.getEncoder().encodeToString(encrypted);
System.out.println("授权码: " + authCode);
}
}

View File

@@ -0,0 +1,11 @@
package org.nl;
/**
* @Author: lyd
* @Date: ${DATE}
*/
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

View File

@@ -0,0 +1,29 @@
package org.nl;
import java.security.*;
import java.util.Base64;
/**
* @Author: lyd
* @Date: 2025/8/13
*/
public class RSAKeyGenerator {
public static void main(String[] args) {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048); // 推荐 2048 位密钥,安全级别高
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();
// Base64 编码,便于存储和传输
String privateKeyBase64 = Base64.getEncoder().encodeToString(privateKey.getEncoded());
String publicKeyBase64 = Base64.getEncoder().encodeToString(publicKey.getEncoded());
System.out.println("Private Key (Base64): " + privateKeyBase64);
System.out.println("Public Key (Base64): " + publicKeyBase64);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}