I have a client and a server side code. I have to take a message as input from the client, encrypt it and send it to the server. But when I print this encrypted message on the server side, it is not the same as it was on the client side. Here's how I am doing this:
First I am encrypting the message using rsa.EncryptOAEP()
function. The message is a member of a struct which has other members too. I am encoding this struct with the gob package and sending it to the server.
Here's the snippet of client side code:
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('
') //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)
}
Here's the server side code:
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
}
When I am printing the message, it should be the same on both the side. So is there some standard protocol or something to deal with encrypted texts?