Commit 859185cf authored by 陈祥烨's avatar 陈祥烨

AES加密算法

parent 46450f7b
...@@ -2,7 +2,6 @@ package com.yeejoin.amos.api.tool.controller; ...@@ -2,7 +2,6 @@ package com.yeejoin.amos.api.tool.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.DataBaseModel; import com.yeejoin.amos.api.tool.face.model.DataBaseModel;
import com.yeejoin.amos.api.tool.face.service.ConnectService;
import com.yeejoin.amos.api.tool.face.service.DataBaseService; import com.yeejoin.amos.api.tool.face.service.DataBaseService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -29,20 +28,19 @@ public class DataBaseResource { ...@@ -29,20 +28,19 @@ public class DataBaseResource {
@Autowired @Autowired
DataBaseService dataBaseService; DataBaseService dataBaseService;
@Autowired
ConnectService connectService ;
/** /**
* 新增 * 新增
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/save") @PostMapping(value = "/refresh")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增") @ApiOperation(httpMethod = "POST", value = "数据库初始化", notes = "数据库初始化")
public ResponseModel<DataBaseModel> save(@RequestBody DataBaseModel dataBaseModel) throws SQLException, ClassNotFoundException { public ResponseModel<List<DataBaseModel>> save(@RequestBody DataBaseModel dataBaseModel) throws Exception {
if(connectService.connectNewDatabase(dataBaseModel) != null) List<DataBaseModel> dataBaseModels = dataBaseService.refreshDataBase(dataBaseModel);
return ResponseHelper.buildResponse(dataBaseService.createWithModel(dataBaseModel)); if (dataBaseModels == null)
return null;
else else
return ResponseHelper.buildResponse(new DataBaseModel()); return ResponseHelper.buildResponse(dataBaseModels);
} }
/** /**
...@@ -58,7 +56,7 @@ public class DataBaseResource { ...@@ -58,7 +56,7 @@ public class DataBaseResource {
Long[] seq = (Long[]) ConvertUtils.convert(Nbr, Long.class); Long[] seq = (Long[]) ConvertUtils.convert(Nbr, Long.class);
Boolean Nbr2[] = new Boolean[Nbr.length]; Boolean Nbr2[] = new Boolean[Nbr.length];
for (int i = 0;i < Nbr.length;i++){ for (int i = 0; i < Nbr.length; i++) {
Nbr2[i] = dataBaseService.removeById(seq[i]); Nbr2[i] = dataBaseService.removeById(seq[i]);
} }
return ResponseHelper.buildResponse(Nbr2); return ResponseHelper.buildResponse(Nbr2);
...@@ -66,28 +64,27 @@ public class DataBaseResource { ...@@ -66,28 +64,27 @@ public class DataBaseResource {
/** /**
* 列表分页查询 * 列表分页查询
*@param current 当前页 *
*@param current 每页大小 * @param current 当前页
* @param current 每页大小
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/page") @GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "分页查询", notes = "分页查询") @ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<DataBaseModel>> queryForPage(@RequestParam(value = "current") int current, @RequestParam(value = "size") int size) public ResponseModel<Page<DataBaseModel>> queryForPage(@RequestParam(value = "current") int current, @RequestParam(value = "size") int size) {
{ Page<DataBaseModel> page = new Page<DataBaseModel>();
Page<DataBaseModel> page=new Page<DataBaseModel>();
page.setCurrent(current); page.setCurrent(current);
page.setSize(size); page.setSize(size);
return ResponseHelper.buildResponse(dataBaseService.queryForDataBasePage(page)); return ResponseHelper.buildResponse(dataBaseService.queryForDataBasePage(page));
} }
/** /**
*列表全部数据查询 * 列表全部数据查询
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询") @ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public ResponseModel<List<DataBaseModel>> selectForList() public ResponseModel<List<DataBaseModel>> selectForList() {
{
return ResponseHelper.buildResponse(dataBaseService.queryForDataBaseList()); return ResponseHelper.buildResponse(dataBaseService.queryForDataBaseList());
} }
} }
package com.yeejoin.amos.api.tool.controller; package com.yeejoin.amos.api.tool.controller;
import com.yeejoin.amos.api.tool.face.model.RelationTreeModel;
import com.yeejoin.amos.api.tool.face.service.AgencyTreeService; import com.yeejoin.amos.api.tool.face.service.AgencyTreeService;
import com.yeejoin.amos.api.tool.face.service.ConnectService;
import com.yeejoin.amos.api.tool.face.service.DataBaseService; import com.yeejoin.amos.api.tool.face.service.DataBaseService;
import com.yeejoin.amos.api.tool.face.service.RelationService; import com.yeejoin.amos.api.tool.face.service.RelationService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -10,16 +8,12 @@ import io.swagger.annotations.ApiOperation; ...@@ -10,16 +8,12 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@CrossOrigin @CrossOrigin
@RestController @RestController
...@@ -29,8 +23,6 @@ public class RelationResource { ...@@ -29,8 +23,6 @@ public class RelationResource {
@Autowired @Autowired
RelationService relationService; RelationService relationService;
@Autowired @Autowired
ConnectService connectService;
@Autowired
DataBaseService dataBaseService; DataBaseService dataBaseService;
@Autowired @Autowired
AgencyTreeService agencyTreeService; AgencyTreeService agencyTreeService;
...@@ -38,10 +30,10 @@ public class RelationResource { ...@@ -38,10 +30,10 @@ public class RelationResource {
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@DeleteMapping(value = "/relation/{agencyCodeId}/{sequenceNbrs}") @DeleteMapping(value = "/relation/{agencyCodeId}/{sequenceNbrs}")
@ApiOperation(httpMethod = "DELETE", value = "机构删除", notes = "机构删除") @ApiOperation(httpMethod = "DELETE", value = "机构删除", notes = "机构删除")
public ResponseModel<String> deleteDataBase(@PathVariable Long agencyCodeId, @PathVariable String sequenceNbrs) throws ClassNotFoundException, SQLException { public ResponseModel<String> deleteDataBase(@PathVariable Long agencyCodeId, @PathVariable String sequenceNbrs) throws Exception {
Long[] seqs = dataBaseService.stringToLong(sequenceNbrs); Long[] seqs = dataBaseService.stringToLong(sequenceNbrs);
for (Long seq : seqs) { for (Long seq : seqs) {
Connection connection = connectService.connectNewDatabase(dataBaseService.queryBySeq(seq)); Connection connection = dataBaseService.connectNewDatabase(dataBaseService.queryBySeq(seq));
relationService.deleteDataBase(connection,agencyTreeService.queryForAgencyCodeById(agencyCodeId)); relationService.deleteDataBase(connection,agencyTreeService.queryForAgencyCodeById(agencyCodeId));
} }
return ResponseHelper.buildResponse("The data has been deleted !"); return ResponseHelper.buildResponse("The data has been deleted !");
......
package com.yeejoin.amos.api.tool.face.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 需要加解密的字段用这个注解
* @author lima
* @date 2023/3/3 17:29
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Encrypted {
}
\ No newline at end of file
package com.yeejoin.amos.api.tool.face.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 带有敏感字段的类需要加这个注解
* @author lima
* @date 2023/3/6 16:18
*/
@Inherited
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface SensitiveData {
}
\ No newline at end of file
...@@ -3,20 +3,21 @@ package com.yeejoin.amos.api.tool.face.model; ...@@ -3,20 +3,21 @@ package com.yeejoin.amos.api.tool.face.model;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.model.BaseModel; import org.typroject.tyboot.core.rdbms.model.BaseModel;
/** /**
* @author r * @author r
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
@NoArgsConstructor
@ApiModel(value = "DataBaseModel", description = "") @ApiModel(value = "DataBaseModel", description = "")
public class DataBaseModel extends BaseModel { public class DataBaseModel extends BaseModel {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "数据名称") @ApiModelProperty(value = "数据名称")
private String dataName; private String dataName = "";
@ApiModelProperty(value = "主机IP") @ApiModelProperty(value = "主机IP")
private String ip; private String ip;
...@@ -25,11 +26,22 @@ public class DataBaseModel extends BaseModel { ...@@ -25,11 +26,22 @@ public class DataBaseModel extends BaseModel {
private String port; private String port;
@ApiModelProperty(value = "数据库名") @ApiModelProperty(value = "数据库名")
private String dbName; private String dbName = "";
@ApiModelProperty(value = "用户名") @ApiModelProperty(value = "用户名")
private String userName; private String userName;
@ApiModelProperty(value = "密码") @ApiModelProperty(value = "密码")
private String passWord; private String passWord;
public DataBaseModel(String dataName, String ip, String port, String dbName, String userName, String passWord) {
this.dataName = dataName;
this.ip = ip;
this.port = port;
this.dbName = dbName;
this.userName = userName;
this.passWord = passWord;
}
} }
...@@ -2,12 +2,16 @@ package com.yeejoin.amos.api.tool.face.orm.dao; ...@@ -2,12 +2,16 @@ package com.yeejoin.amos.api.tool.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBase; import com.yeejoin.amos.api.tool.face.orm.entity.DataBase;
import org.mapstruct.Mapper;
import org.springframework.stereotype.Repository;
/** /**
* Mapper 接口 * Mapper 接口
* *
* @author r * @author r
*/ */
public interface DataBaseMapper extends BaseMapper<DataBase> {
@Mapper
@Repository
public interface DataBaseMapper extends BaseMapper<DataBase> {
} }
...@@ -2,6 +2,8 @@ package com.yeejoin.amos.api.tool.face.orm.entity; ...@@ -2,6 +2,8 @@ package com.yeejoin.amos.api.tool.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity; import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -10,6 +12,8 @@ import lombok.experimental.Accessors; ...@@ -10,6 +12,8 @@ import lombok.experimental.Accessors;
* @author r * @author r
*/ */
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("database_join_record") @TableName("database_join_record")
...@@ -50,4 +54,5 @@ public class DataBase extends BaseEntity { ...@@ -50,4 +54,5 @@ public class DataBase extends BaseEntity {
*/ */
@TableField("passWord") @TableField("passWord")
private String passWord; private String passWord;
} }
package com.yeejoin.amos.api.tool.face.service;
import com.yeejoin.amos.api.tool.face.model.DataBaseModel;
import com.yeejoin.amos.api.tool.face.orm.dao.DataBaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBase;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
@Service
public class ConnectService extends BaseService<DataBaseModel, DataBase, DataBaseMapper> {
public List<Connection> connectAllDatabases() {
List<Connection> connections = new ArrayList<>();
// JDBC连接
Connection connection = null;
// Statement statement = null;
// ResultSet resultSet = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立数据库连接
// connection = DriverManager.getConnection(url, username, password);
// 创建Statement对象
// statement = connection.createStatement();
// 执行查询语句
// String sql = "SELECT * FROM database_join_record";
// resultSet = statement.executeQuery(sql);
List<DataBaseModel> dataBaseModels = this.queryForList("",false);
// 处理查询结果
for (DataBaseModel dataBaseModel : dataBaseModels){
// 获取结果集中的数据
// String ip = dataBaseModel.getIp();
// String port = resultSet.getString("port");
// String dbName = resultSet.getString("dbName");
// String userName = resultSet.getString("userName");
// String passWord = resultSet.getString("passWord");
// 连接数据库
String dbUrl = "jdbc:mysql://" + dataBaseModel.getIp() + ":" + dataBaseModel.getPort() + "/" + dataBaseModel.getDbName();
Connection dbConnection = DriverManager.getConnection(dbUrl, dataBaseModel.getUserName(), dataBaseModel.getPassWord());
// 将连接添加到列表中
connections.add(dbConnection);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connections;
}
public Connection connectNewDatabase(DataBaseModel dataBaseModel) throws SQLException, ClassNotFoundException {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 连接新增的数据库
String dbUrl = "jdbc:mysql://" + dataBaseModel.getIp() + ":" + dataBaseModel.getPort() + "/" + dataBaseModel.getDbName();
return DriverManager.getConnection(dbUrl, dataBaseModel.getUserName(), dataBaseModel.getPassWord());
}
}
package com.yeejoin.amos.api.tool.face.service; package com.yeejoin.amos.api.tool.face.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.api.tool.face.model.DataBaseModel; import com.yeejoin.amos.api.tool.face.model.DataBaseModel;
import com.yeejoin.amos.api.tool.face.orm.dao.DataBaseMapper; import com.yeejoin.amos.api.tool.face.orm.dao.DataBaseMapper;
import com.yeejoin.amos.api.tool.face.orm.entity.DataBase; import com.yeejoin.amos.api.tool.face.orm.entity.DataBase;
import com.yeejoin.amos.api.tool.face.util.AESUtils;
import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.ConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
* 服务实现类 * 服务实现类
* *
* @author r * @author r
*/ */
@Service @Service
public class DataBaseService extends BaseService<DataBaseModel, DataBase, DataBaseMapper> { public class DataBaseService extends BaseService<DataBaseModel, DataBase, DataBaseMapper> {
@Autowired
private DataBaseMapper dataBaseMapper;
// public void deleteAll(){
// dataBaseMapper.deleteAll();
// }
/** /**
* 分页查询 * 分页查询
*/ */
...@@ -27,34 +44,80 @@ public class DataBaseService extends BaseService<DataBaseModel, DataBase, DataBa ...@@ -27,34 +44,80 @@ public class DataBaseService extends BaseService<DataBaseModel, DataBase, DataBa
* 列表查询 示例 * 列表查询 示例
*/ */
public List<DataBaseModel> queryForDataBaseList() { public List<DataBaseModel> queryForDataBaseList() {
return this.queryForList("" , false); return this.queryForList("", false);
}
public List<DataBaseModel> queryForDbInfoListByApiSource(String apiSource){
return this.queryForList("" , false,apiSource);
} }
public List<DataBaseModel> queryForDbInfoListByApiSource(String apiSource) {
return this.queryForList("", false, apiSource);
}
public void deleteBySeqs(String sequenceNbrs) { public void deleteBySeqs(String sequenceNbrs) {
String Nbr[] = sequenceNbrs.split(","); String Nbr[] = sequenceNbrs.split(",");
Long[] seq = (Long[]) ConvertUtils.convert(Nbr, Long.class); Long[] seq = (Long[]) ConvertUtils.convert(Nbr, Long.class);
Boolean Nbr2[] = new Boolean[Nbr.length]; Boolean Nbr2[] = new Boolean[Nbr.length];
for (int i = 0;i < Nbr.length;i++){ for (int i = 0; i < Nbr.length; i++) {
Nbr2[i] = this.removeById(seq[i]); Nbr2[i] = this.removeById(seq[i]);
} }
} }
public Long[] stringToLong(String sequenceNbrs){ public Long[] stringToLong(String sequenceNbrs) {
String[] seqs = sequenceNbrs.split(","); String[] seqs = sequenceNbrs.split(",");
Long[] seq = new Long[seqs.length]; Long[] seq = new Long[seqs.length];
for (int i = 0; i < seqs.length;i++) { for (int i = 0; i < seqs.length; i++) {
seq[i] = Long.parseLong(seqs[i]); seq[i] = Long.parseLong(seqs[i]);
} }
return seq; return seq;
} }
public String[] getDataBaseName(Connection connection) throws ClassNotFoundException, SQLException {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SHOW DATABASES");
String[] result = new String[1000];
int count = 0;
while (rs.next()) {
result[count++] = rs.getString(1);
}
return result;
}
public List<DataBaseModel> refreshDataBase(DataBaseModel dataBaseModel) throws Exception {
this.remove(new QueryWrapper<>());
//连接数据库
String url = "jdbc:mysql://" + dataBaseModel.getIp() + ":" + dataBaseModel.getPort() + "/";
String user = dataBaseModel.getUserName();
String pwd = dataBaseModel.getPassWord();
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, user, pwd);
pwd = AESUtils.encrypt(pwd);
if (connection == null)
return null;
List<DataBaseModel> dataBaseModels = new ArrayList<>();
Collection<DataBase> dataBases = new ArrayList<>();
String[] dataBaseName = this.getDataBaseName(connection);
for (String name : dataBaseName) {
if (name == null)
break;
DataBaseModel model = new DataBaseModel(name, dataBaseModel.getIp(), dataBaseModel.getPort(), name, user, pwd);
dataBaseModels.add(model);
DataBase dataBase = this.prepareEntity(model);
dataBases.add(dataBase);
}
this.saveBatch(dataBases);
connection.close();
return dataBaseModels;
}
public Connection connectNewDatabase(DataBaseModel dataBaseModel) throws Exception {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 连接新增的数据库
String dbUrl = "jdbc:mysql://" + dataBaseModel.getIp() + ":" + dataBaseModel.getPort() + "/" + dataBaseModel.getDbName();
dataBaseModel.setPassWord(AESUtils.decrypt(dataBaseModel.getPassWord()));
return DriverManager.getConnection(dbUrl, dataBaseModel.getUserName(), dataBaseModel.getPassWord());
}
} }
...@@ -19,8 +19,6 @@ public class RelationService extends BaseService<RelationModel, Relation, Relati ...@@ -19,8 +19,6 @@ public class RelationService extends BaseService<RelationModel, Relation, Relati
@Autowired @Autowired
DataBaseService dataBaseService; DataBaseService dataBaseService;
@Autowired
ConnectService connectService;
/** /**
...@@ -125,12 +123,6 @@ public class RelationService extends BaseService<RelationModel, Relation, Relati ...@@ -125,12 +123,6 @@ public class RelationService extends BaseService<RelationModel, Relation, Relati
public List<RelationTreeModel> createRelationTree(Connection connection) throws SQLException { public List<RelationTreeModel> createRelationTree(Connection connection) throws SQLException {
List<HashMap<String, String>> maps = this.queryRelation(connection); List<HashMap<String, String>> maps = this.queryRelation(connection);
List<RelationTreeModel> trees = new ArrayList<>(); List<RelationTreeModel> trees = new ArrayList<>();
// for (RelationTreeModel root: createNodes(maps)){
// if(root.getParentName().equals("")){
//// System.out.println(root);
// trees.addAll(createTree(createNodes(maps),""));
// }
// }
trees.addAll(createTree(createNodes(maps), "")); trees.addAll(createTree(createNodes(maps), ""));
return trees; return trees;
} }
......
package com.yeejoin.amos.api.tool.face.util;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
/**
* 加解密工具类
* @author lima
* @date 2023/3/3 16:56
*/
public class AESUtils {
private static final String ALGORITHM = "AES";
private static final String SECRET_KEY = "aes-key-lima1995"; // 密钥
/**
* 加密
*/
public static String encrypt(String value) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
/**
* 解密
*/
public static String decrypt(String value) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decoded = Base64.getDecoder().decode(value);
byte[] decrypted = cipher.doFinal(decoded);
return new String(decrypted);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment