| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.nio.charset.StandardCharsets; |
| | | |
| | | @Component |
| | | public class OpenCryptUtil { |
| | | |
| | | // 加密密钥(从配置文件读取,避免硬编码) |
| | | @Value("${app.crypt.secret-key}") // 长度需符合算法要求(如AES-256需32位) |
| | | @Value("${crypt.secret}") // 长度需符合算法要求(如AES-256需32位) |
| | | private String secret; |
| | | |
| | | // 初始化向量(CBC模式需要,可选) |
| | |
| | | try { |
| | | // 调用 open-crypt 的加密方法(根据实际API调整) |
| | | //user转为 json |
| | | String json = JSON.toJSONString(user); |
| | | return UserSign.gen(json, "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes()); |
| | | // String json = JSON.toJSONString(user); |
| | | return UserSign.gen(user, "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes(StandardCharsets.UTF_8)); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException("加密失败:" + e.getMessage(), e); |
| | | } |
| | |
| | | public String decrypt(String token) { |
| | | try { |
| | | // 调用 open-crypt 的解密方法 |
| | | return UserSign.decrypt(token, "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes()); |
| | | byte[] keyBytes = "fY9tX7vX7qH5bN2cD8eM4xD2fH7uL4xM".getBytes(StandardCharsets.UTF_8); |
| | | return UserSign.decrypt(token, keyBytes); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException("解密失败:" + e.getMessage(), e); |
| | | } |