feat(BatteryStationServiceImpl): 实现获取或生成 RSA 密钥对功能
- 新增 RsaSecretKey 方法,根据电站编码获取或生成 RSA 密钥对 - 优化了密钥对的生成和保存逻辑,避免重复生成- 增加了对已有密钥对的查询和直接返回功能,提高效率
This commit is contained in:
parent
a6ab62fa82
commit
994179f53b
@ -111,26 +111,52 @@ public class BatteryStationServiceImpl implements BatteryStationService {
|
||||
return new Result<List<BatteryStation>>().success(page.setRecords(list));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取或生成RSA密钥对并保存到数据库
|
||||
*
|
||||
* @param stationCode 电站编码,用于标识特定的电池电站
|
||||
* @return 返回包含密钥对信息的Result对象
|
||||
*/
|
||||
@Override
|
||||
public Result<Map<String, String>> RsaSecretKey(String stationCode) {
|
||||
KeyPair keyPair = KeyUtil.generateKeyPair(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue());
|
||||
String privatekeyBase64String = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
|
||||
String publickeyBase64String = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
|
||||
batteryStationSecretKeyDao.delete(new QueryWrapper<BatteryStationSecretKey>().eq("type", 1).eq("station_code", stationCode));
|
||||
BatteryStationSecretKey bssk = new BatteryStationSecretKey();
|
||||
bssk.setStationCode(stationCode);
|
||||
bssk.setType(1);
|
||||
bssk.setPrivateKey(privatekeyBase64String);
|
||||
bssk.setPublicKey(publickeyBase64String);
|
||||
bssk.setCtime(new Date());
|
||||
batteryStationSecretKeyDao.insert(bssk);
|
||||
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
map.put("publickey", publickeyBase64String);
|
||||
map.put("privatekey", privatekeyBase64String);
|
||||
return new Result<Map<String,String>>().success(map);
|
||||
// 查询数据库中是否存在对应电站编码的密钥对
|
||||
BatteryStationSecretKey existingKey = batteryStationSecretKeyDao.selectOne(
|
||||
new QueryWrapper<BatteryStationSecretKey>()
|
||||
.eq("type", 1)
|
||||
.eq("station_code", stationCode)
|
||||
);
|
||||
if (existingKey != null) {
|
||||
// 如果存在密钥对,则直接返回
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("publickey", existingKey.getPublicKey());
|
||||
map.put("privatekey", existingKey.getPrivateKey());
|
||||
return new Result<Map<String, String>>().success(map);
|
||||
} else {
|
||||
// 如果不存在密钥对,则生成新的密钥对
|
||||
KeyPair keyPair = KeyUtil.generateKeyPair(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue());
|
||||
// 将私钥转换为Base64编码的字符串
|
||||
String privatekeyBase64String = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
|
||||
// 将公钥转换为Base64编码的字符串
|
||||
String publickeyBase64String = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
|
||||
// 创建新的电池电站密钥对象
|
||||
BatteryStationSecretKey bssk = new BatteryStationSecretKey();
|
||||
bssk.setStationCode(stationCode);
|
||||
bssk.setType(1);
|
||||
bssk.setPrivateKey(privatekeyBase64String);
|
||||
bssk.setPublicKey(publickeyBase64String);
|
||||
bssk.setCtime(new Date());
|
||||
// 将新的密钥对象插入数据库
|
||||
batteryStationSecretKeyDao.insert(bssk);
|
||||
// 创建一个映射,用于存储和返回公钥和私钥
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("publickey", publickeyBase64String);
|
||||
map.put("privatekey", privatekeyBase64String);
|
||||
// 返回包含密钥对信息的成功结果
|
||||
return new Result<Map<String, String>>().success(map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Result<List<BatteryStationVO>> listStation(String plateNum) {
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user