kotlin - Kotlin 中的 Base64 编码器
问题描述
你能帮我把这个方法从java重构到kotlin吗?我在 return 语句中遇到了 ByteBuffer 的问题。看起来在 Kotlin 中它不是那样工作的。
public String encryptData(Object payload, Key secretKey)
throws NoSuchAlgorithmException, NoSuchPaddingException, JsonProcessingException, BadPaddingException,
IllegalBlockSizeException, InvalidAlgorithmParameterException, InvalidKeyException {
var initialVector = new byte[INITIAL_VECTOR_SIZE];
secureRandom.nextBytes(initialVector);
var cipher = Cipher.getInstance(AES_TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(initialVector));
var data = cipher.doFinal(objectMapper.writeValueAsString(payload).getBytes());
var byteBuffer = ByteBuffer.allocate(initialVector.length + data.length);
return new String(
Base64.getEncoder()
.encode(byteBuffer
.put(0, initialVector)
.put(INITIAL_VECTOR_SIZE, data))
.array());
}
解决方案
设置您byteBuffer
的 base 64 转换之外更干净。完成此操作后,您可以:
...
return Base64.getEncoder().encodeToString(byteBuffer)
推荐阅读
- python - 从类中的函数访问变量
- reactjs - 在异步函数结束之前调用 React setState
- python - 使用 discord.py 在频道中检索先前发送的消息的命令
- xamarin.ios - 如何在 xamarin.iOS 中为 UILable programaticalli 提供填充
- python-3.x - FastAPI 中嵌套模型的正确方法
- woocommerce - Woocommerce 等额存款三部分付款,解决方案
- r - 来自 phylocomr 包的错误 ph_pd():utils::read.table 中的错误(text = out,header = TRUE,stringsAsFactors = FALSE):输入中没有可用的行
- perl - 使用 IO::Socket::INET 创建 UDP 服务器而不指定端口
- python - 如何从列表中创建字符串列表
- python - 我无法找到这个元素,python selenium