Я работаю на клиенте и сервере.Оба будут работать на моих устройствах (несколько клиентов и 1 сервер).Для сервера я планирую использовать ktor.Я хочу, чтобы соединения были зашифрованы, чтобы никто, кто каким-либо образом слушал соединение, не мог выступать в качестве клиента для Сервера.Никто не должен знать, что связывают Сервер и Клиент.Поскольку у меня есть Клиент и Сервер, обмен ключами не представляет проблем, ключ может быть жестко закодирован.Если это возможно с ktor, не могли бы вы дать пример кода о том, как использовать предварительный общий ключ для шифрования всего соединения?Чтобы быть более конкретным, скажем, у меня есть программа hello world:
import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
fun main(args: Array<String>) {
val server = embeddedServer(Netty, port = 8080) {
routing {
get("/") {
call.respondText("Hello World!", ContentType.Text.Plain)
}
get("/demo") {
call.respondText("HELLO WORLD!")
}
}
}
server.start(wait = true)
}
Как мне нужно изменить это, чтобы соединение шифровалось ключом, чтобы «клиенты», не знающие ключ, не могли выполнять вызовыи даже если кто-то прослушивает соединение с реальным клиентом, он не может прочитать ответный текст, поскольку он передается в зашифрованном виде.(Чего я не хочу, так это ручного шифрования только строки и дешифрования ее на другой стороне, я хочу, чтобы все соединение было зашифровано с помощью предварительного ключа).