2017-04-18 5 views
-2

Ich möchte RSA-Schlüsselpaar (öffentlich und privat) generieren und sie dann für AES-Verschlüsselung und Entschlüsselung verwenden. Öffentliche Schlüssel für die Verschlüsselung und den privaten Schlüssel für Decryption.I schrieb einen einfachen Code für diese, aber das Problem ist, dass, wenn ich diesen Code ausführen ich diese Fehlermeldung erhalten:So verwenden Sie RSA-Schlüsselpaar für AES-Verschlüsselung und Decryprion in Golang

crypto/aes: invalid key size 1639 

Wie kann ich dieses Problem resove ?? Mein Verschlüsselungscode lautet:

//genrarting private key 
privateKey, err := rsa.GenerateKey(rand.Reader, 2014) 
if err != nil { 
    return 
} 
privateKeyDer := x509.MarshalPKCS1PrivateKey(privateKey) 
privateKeyBlock := pem.Block{ 
    Type: "RSA PRIVATE KEY", 
    Headers: nil, 
    Bytes: privateKeyDer, 
} 
privateKeyPem := string(pem.EncodeToMemory(&privateKeyBlock)) 


//using privateKeyPem for encryption 
text := []byte("My name is Astaxie") 
ciphertext, err := encrypt(text, []byte(privateKeyPem)) 
if err != nil { 
    // TODO: Properly handle error 
    log.Fatal(err) 
} 
fmt.Printf("%s => %x\n", text, ciphertext) 

//Definition of encrypt() 
func encrypt(plaintext []byte, key []byte) ([]byte, error) { 
c, err := aes.NewCipher(key) 
if err != nil { 
    return nil, err 
} 

gcm, err := cipher.NewGCM(c) 
if err != nil { 
    return nil, err 
} 

nonce := make([]byte, gcm.NonceSize()) 
if _, err = io.ReadFull(rand.Reader, nonce); err != nil { 
    return nil, err 
} 

return gcm.Seal(nonce, nonce, plaintext, nil), nil 
} 
+0

Welche Zeile erzeugt diesen Fehler? – Flimzy

+2

Was ist Definition von 'encrypt()' Funktion? Zeigen Sie uns [Minimales, vollständiges und verifizierbares Beispiel] (https://stackoverflow.com/help/mcve) – ymonad

+0

Sie erwarten, dass eine AES-Chiffre mit einem RSA-Schlüssel funktioniert? – DarkSquirrel42

Antwort

0

Wie in den Kommentaren vorgeschlagen, ich suchte "Hybrid-Kryptographie". Und dieses example hat mein Problem gelöst.

Verwandte Themen