java - 导出用spring boot加密的json
问题描述
在我的系统上人们的数据应该通过 json 导出到基于 Rest 的系统,post body 有效负载应该被加密......因为我对 rest 和 springboot 的了解很少我不知道我是否做对了...... 。我想不是。* 我正在使用 jooq
在这里我正在寻找人员并返回人员列表
Result<Record> result = ctx.select()
.from(PERSON)
.orderBy(PERSON.NUM)
.fetch();
for (Record r : result) {
Integer lNum = r.getValue(PERSON.NUM);
String name = r.getValue(PERSON.SNOME);
String rm = r.getValue(PERSON.SRM);
personDto = new AlunoDto();
personDto.setlNum(num);
personDto.setsNome(name);
personDto.setsRm(rm);
personList.add(personDto);
}
} catch (Exception e) {
e.printStackTrace();
}
**return personList;**
在我的 PersonController 中,我获取人员列表并将步骤作为转换为 json 并加密的方法的参数
@RequestMapping(value = "/person", method = RequestMethod.GET)
public String getAllPerson(){
try {
personsEncypted= convertToJson(personList);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return personsEncypted;
}
public String convertToJson(List obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
String onInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
String key = "00000000000000000000000000";
String personEncrypted= encrypt(key, jsonInString);
return personEncrypted;
}
public static String encrypt(String key, String value) {
try {
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE,skeySpec);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.encodeBase64String(encrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
对方会消费数据吗?太感谢了...
解决方案
不,这是行不通的。
简单的解决方案是使用 TLS(HTTPS)。不需要加密代码,只需在您的 java web 服务器或服务器前端的负载平衡器中进行一些配置,如 apache2 或 nginx。
即使 http 客户端正在合作,像 AES 这样的对称算法也不起作用。客户端需要知道相同的密钥。
推荐阅读
- php - 无法为 DateRangePicker::widget 设置占位符
- jsf - 带有 ExtensionlessURLs / Omnifaces 的 JSF
- html - 如何从顶部为下降的 div 设置动画并旋转?
- reactjs - react-data-grid中的行更新后如何删除排序箭头?
- firebase-cloud-messaging - 在 Nuxtjs 中注册 Service Worker
- python - 在 python 中通过 restful API 传输类似字节的对象
- sharepoint-online - 在 Sharepoint Online 团队网站中,我们如何启用多语言页面和新闻翻译功能
- typescript - 为什么打字稿不能通过泛型函数验证返回类型?
- codeigniter - Codeigniter QRCODE如何保存在数据库中
- excel - Powerpoint 未使用 VBA 启动:等待 OLE 操作