判断输入的主机号是否为32位,如果不等于32位则返回失败;将主机号经过AES加密算法中密钥为“1234567890123456”的ECB模式加密后,用base64编码形式打印,再经过md5加密算法将打印出来的base64编码生成32位散列值,作为用于激活操作系统的序列号,并基于序列号生成相应的二维码。输入的主机号和输出的序列号需要存储到数据库中。(这个二维码是不变的的,变的是二维码里面的内容在本地)
先去创建一个二维码(里面的内容随便照片、文字)
依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.4.0</version> <!-- 根据最新版本调整 -->
</dependency>
代码展示
private static final String AES_KEY = "1234567890123456";
@Override
public Result<String> generate(String hao) {
// 验证主机号长度
if (hao.length() != 32) {
Result.error("主机号长度不合法,操作失败!");
}
// AES加密
String encryptedHostNumber = encryptAES(hao, AES_KEY);
// Base64编码
String base64Encoded = Base64.getEncoder().encodeToString(encryptedHostNumber.getBytes(StandardCharsets.UTF_8));
// MD5加密
String md5Hash = generateMD5Hash(base64Encoded);
// 生成二维码(这里省略生成二维码的步骤)
try {
// 二维码内容
String qrCodeData = md5Hash;
// 设置二维码的宽度和高度
int width = 300;
int height = 300;
// 设置二维码图片保存路径
String filePath = "之前本地报错的二维码";//自己的
// 自己的服务器地址
String endpoint = "";
// 自己的AccessK