нестабильная расшифровка, иногда получалось шифрование: аутентификация сообщения не удалась - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать E2E Encryption для моего программного обеспечения, но дешифрование очень нестабильно, иногда может успешно расшифровываться, иногда получается cipher: message authentication failed, вот мой код шифрования и дешифрования

func Encrypt(data []byte, passphrase string) ([]byte, error) {
    // create aes.NewCipher from hashed md5 passphrase
    block, _ := aes.NewCipher([]byte(createHash(passphrase)))
    //  NewGCM returns the given 128-bit, block cipher wrapped in
    // Galois Counter Mode with the standard nonce length.
    gcm, err := cipher.NewGCM(block)
    if err != nil {
        return nil, err
    }
    // initialize slice with length of nonce that must be passed to Seal and Open.
    nonce := make([]byte, gcm.NonceSize())
    if _, err = io.ReadFull(rand.Reader, nonce); err != nil {
        return nil, err
    }

    ciphertext := gcm.Seal(nonce, nonce, data, nil)
    return ciphertext, nil
}

func Decrypt(data []byte, passphrase string) ([]byte, error) {
    // create md5 byte slice
    key := []byte(createHash(passphrase))
    // just `reverse` algorithm with passphrase until return
    block, err := aes.NewCipher(key)
    if err != nil {
        return nil, err
    }
    gcm, err := cipher.NewGCM(block)
    if err != nil {
        return nil, err
    }
    nonceSize := gcm.NonceSize()
    nonce, ciphertext := data[:nonceSize], data[nonceSize:]
    plaintext, err := gcm.Open(nil, nonce, ciphertext, nil)
    if err != nil {
        return nil, err
    }
    return plaintext, nil
}

зашифрованныйдвоичные значения передаются через http:

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    return nil, err
}

decrypt, err := Decrypt(body, r.Passphrase)

, что я уже пытаюсь проверить, это ioutil.ReadAll правильно читать содержимое или что-то не так с decryptor

1 Ответ

0 голосов
/ 24 октября 2019

извините, проблема была не в шифровании / дешифровании, а в http-сервере для передачи чипового текста, и теперь уже исправляет https://github.com/codenoid/GoTral-Server/commit/493c7f654753cae36f074c1c5f382953e227d295

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...