Golang-Datei-Verschlüsselung mit crypto/aes-lib

Ich versuche, eine Datei verschlüsseln mit dem Gehen crypto/aes-Paket. Ich habe so weit:

func encrypt(source string, localdir string) error {

    src := filepath.Join("/home/bacula/cloud-backup/"+localdir, source)
    dst := filepath.Join(src + ".aes")

    fmt.Println(src)
    fmt.Println(dst)
    key := []byte("example key 1234")

    iv := []byte(key)[:aes.BlockSize]

    aesBlockEncrypter, err := aes.NewCipher([]byte(key))
    if err != nil {
            return err
    }
    aesEncrypter := cipher.NewCFBEncrypter(aesBlockEncrypter, iv)
    aesEncrypter.XORKeyStream([]byte(dst), []byte(src))
    return nil
}

Meine erste Frage ist, wie kann ich verbessern, wie ich bin, die Generierung des IV? Und zweitens, es gibt keine Ausgabe-Datei, so wie streame ich die Datei über XORKeyStream?

  • Ich empfehle, mit golang.org/x/crypto/nacl/secretbox wenn Sie brauchen, um Dateien zu verschlüsseln, wie es auch korrekt authentifiziert den verschlüsselten Daten.
  • Nicht Rollen Sie Ihre eigene Verschlüsselung. Nur mit einem sicheren primitive (AES) ist nicht ausreichend/ist sicher, wenn Sie nicht verwenden Sie es richtig (IV, Schlüssel, block-Modus, etc, etc). E. g. nicht immer eine passphrase verwenden raw-wie Sie es tun (es gibt ein paar wichtige Funktionen Ableitung wie ist golang.org/x/crypto/pbkdf2 für dass); verwenden Sie eine kryptografisch sichere und völlig zufällig, IV, etc. Es sei denn, du bist ein Kryptographie-Experte sollten Sie über eine vollständige Implementierung von einem Experten geschrieben, der kümmert sich um sämtliche details, so dass Sie nicht bekommen es falsch.
  • Auch, crypto.stackexchange.com kann besser für crypto-Fragen wie "wie erstelle ich eine IV -" oder "wie kann ich das verwenden einer passphrase als Schlüssel" (die weitgehend Programmiersprachen-unabhängige Fragen).
  • Ich habe Bedenken secretbox aber es gibt sehr wenig Dokumentation. Ich kann nicht finden, Beispiele gibt. Ich wünschte, es war besser, docs für es
InformationsquelleAutor W Khan | 2015-09-01
Schreibe einen Kommentar