Im在安乐器应用方面工作,我需要将申请机构加密,然后再将其发送服务器,然后对从服务器收到的答复进行加密。 使用Ktor s HTTP客户进行网络申请的Im,我有CryptoUtils
级,使用AES处理加密和加密。 在此概述我所做的工作:
- Encryption: I have successfully installed a plugin to encrypt the request body before it s sent to the server. Here s the code for the encryption install (this exemple is for login only, i willl make it global later):
private fun HttpClientConfig<OkHttpConfig>.encryptionInstall() {
install("EncryptRequest") {
requestPipeline.intercept(HttpRequestPipeline.Transform) { request ->
if (request !is EmptyContent) {
val request = request as LoginDTO
val originalBody = Json.encodeToString(x)
val encryptionKey = "MY_ENCRYPTION_KEY"
val encryptedBody = CryptoUtils.encryptData(
encryptionKey, originalBody
)
val encryptedContent = TextContent(encryptedBody, ContentType.Application.Json)
proceedWith(encryptedContent)
} else {
proceedWith(request)
}
}
}
}
2. 加密: 现在,Im试图通过对从服务器收到的答复进行加密。 此处为加密装置代码:
private fun HttpClientConfig<OkHttpConfig>.decryptInstall() {
install("DecryptResponse") {
receivePipeline.intercept(HttpReceivePipeline.After) { response ->
val originalResponseReceived = response.body<String>()
runCatching {
val encryptionKey = "MY_DECRYPTION_KEY"
val decryptData = CryptoUtils.decryptData(
encryptionKey, originalResponseReceived.toString().replace("
", "")
)
val castedFromStringToObject =
Json.decodeFromString<LoginResponseDTO>(decryptData.orEmpty())
// Now I have the decrypted data, how do I proceed with it?
// I need to create an HttpResponse object with this decrypted data.
// But I can t create an instance of an abstract class HttpResponse.
// How can I create a new HttpResponse to proceed with the decrypted data?
}
}
}
}
我尝试利用DecodeResponse plugin对回复进行加密,我成功地对内容进行了加密。 然而,在试图处理加密数据时,我遇到了一个问题。 自2006年以来 HttpResponse是一个抽象的类别,我无法直接创立一个处理加密数据的例子。
我期望能够建立一个带有加密数据的新HttpResponse物体,以便我能够继续处理。 然而,由于HttpResponse是抽象的,我不清楚如何着手。 我需要就如何建立新的HttpResponse提供指导或实例,以便在加密后处理加密数据。
任何关于如何实现这一目标的见解或实例都会受到高度赞赏。
事先感谢你的帮助!