Существует ли какой-либо стандартный протокол для передачи зашифрованного текста RSA по сети? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть клиентский и серверный код. Я должен принять сообщение от клиента, зашифровать его и отправить на сервер. Но когда я печатаю это зашифрованное сообщение на стороне сервера, оно не совпадает с тем, что было на стороне клиента. Вот как я это делаю:

Сначала я шифрую сообщение с помощью функции rsa.EncryptOAEP(). Сообщение является членом структуры, которая также имеет другие члены. Я кодирую эту структуру с помощью пакета gob и отправляю ее на сервер.

Вот фрагмент кода на стороне клиента:

func SocketClient() {
    conn, err := net.Dial("tcp", ":9000")
    if err != nil {
        log.Fatalln(err)
    }
    defer conn.Close()
    enc := gob.NewEncoder(conn)
    buff, _ := input_reader.ReadBytes('\n')    //this is the message to be encrypted
    label := []byte("")
    hash := sha256.New()
    ciphertext, _ := rsa.EncryptOAEP(
        hash,
        rand.Reader,
        &receiverPublicKey,
        buff,
        label,
    )
    fmt.Printf("%s",ciphertext) //this is to check if the text is same or not
    block.Message = ciphertext //this is the struct to be sent over network
    enc.Encode(block)
}

Вот код на стороне сервера:

func handleConn(conn net.Conn) {
    defer conn.Close()
    dec := gob.NewDecoder(conn)
    dec.Decode(&block)
    fmt.Printf("%s",block.Message) //it is different from the text printed in client side code
}

Когда я печатаю сообщение, оно должно быть одинаковым с обеих сторон. Так есть ли какой-то стандартный протокол или что-то для работы с зашифрованными текстами?

...