现在前后端对接都是明文json,需要加密后传一个字符串,这应该怎么实现,提醒说要注意加密后的字符串长度
2条回答 默认 最新
关注- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7515662
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:怎样在前端遍历后端服务器传递来的json字符串中的集合?
- 除此之外, 这篇博客: 【个人博客项目 4】自定义全局返回类型模板、自定义全局异常,并以json形式返回在页面中的 首先添加全局的信息返回格式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
自定义一个全局的返回格式,使返回结果更加规范化,前后端联调的时候能够更加轻松
- 您还可以看一下 黄菊华老师的微信小程序Json数据使用专题课程中的 微信小程序入门到就业课(全栈课)学习说明【建议看下】小节, 巩固相关知识点
- 以下回答由chatgpt基于相关博客总结生成:
在前后端对接时对明文JSON进行加密并传输,可以使用对称加密算法和密钥来实现。具体步骤如下:
- 生成密钥:选择一个长度合适的密钥(比如128位),可以使用随机数生成器生成一个随机的密钥,并将其保存。
import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.NoSuchAlgorithmException; // 生成密钥 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); SecretKey secretKey = keyGenerator.generateKey(); byte[] keyBytes = secretKey.getEncoded();- 加密明文JSON:使用AES对称加密算法,使用生成的密钥对明文JSON进行加密。
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; // 加密明文JSON String jsonString = "{\"field1\": \"value1\", \"field2\": \"value2\"}"; String algorithm = "AES"; SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, algorithm); Cipher cipher = Cipher.getInstance(algorithm); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encryptedBytes = cipher.doFinal(jsonString.getBytes()); // 对加密后的字节数组进行Base64编码,得到加密后的字符串 String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);-
传输加密后的字符串:将加密后的字符串传输给后端。
-
后端解密:后端使用相同的密钥和加密算法对接收到的加密字符串进行解密。
// 解密加密字符串 byte[] encryptedBytes = Base64.getDecoder().decode(encryptedString); Cipher cipher = Cipher.getInstance(algorithm); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); byte[] decryptedBytes = cipher.doFinal(encryptedBytes); // 解密后的字节数组转换为字符串 String decryptedString = new String(decryptedBytes);需要注意的是,加密后的字符串长度是根据明文的长度和加密算法决定的。对称加密算法一般保持加密后的长度与明文长度相同。如果需要考虑加密后的字符串长度问题,可以选择使用非对称加密算法(如RSA)对密钥进行加密,然后使用对称加密算法对数据进行加密。这样可以实现加密后的字符串长度相对较短。
以上是对明文JSON进行加密并传输的具体解决方案。如果您还有其他问题或需要进一步的帮助,请随时告诉我。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报