AES-ECB-verschlüsseln/entschlüsseln, nur entschlüsselt werden die ersten 16 bytes
Hatte ich die Funktion entschlüsseln, AES-256 Zeichenfolge, sondern es wieder nur 16 char
bool decrypt_block(unsigned char* cipherText, unsigned char* plainText, unsigned char* key)
{
AES_KEY decKey;
if (AES_set_decrypt_key(key, 256, &decKey) < 0)
return false;
AES_decrypt(cipherText, plainText, &decKey);
return true;
}
decrypt_block( encoded, resultText, ( unsigned char *) "57f4dad48e7a4f7cd171c654226feb5a");
Jede Idee
- Sie sollten nicht
AES_encrypt
und Freunde. Sie sollten mitEVP_*
Funktionen. Siehe EVP Symmetrische Verschlüsselung und Entschlüsselung auf die OpenSSL-wiki. In der Tat, sollten Sie wahrscheinlich über authentifizierte Verschlüsselung, da es bietet Vertraulichkeit und Authentizität. Siehe EVP Authentifizierte Verschlüsselung und Entschlüsselung auf die OpenSSL-wiki.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, dass Sie sind verwirrend Schlüssellänge und der Blockgröße.
AES verwendet werden können, mit 3 verschiedenen Schlüssellängen: 128-bit, 192-bit & 256-bit.
AES verwendet immer ein Blockgröße von 128 bits (16 bytes). Für Nachrichten, die mehr als 16 Byte lange, Sie brauchen, um zu entschlüsseln (oder verschlüsseln) 16 Byte zu einer Zeit, und erwarten, um 16 bytes Ausgabe jedes mal. (Sie werden auch entscheiden müssen, welcher Modus zu verwenden - z.B. CBC, CTR, ECB, etc.. Wenn Sie sich entschlüsseln von text zur Verfügung gestellt von jemand anderem, dann, dass die Entscheidung bereits getroffen wurde, für Sie. Wenn die Entscheidung für sich selbst, denken Sie daran, dass die EZB ist fast nie die richtige Wahl.) Wenn die Nachricht nicht ein Vielfaches von 16 bytes lang ist, werden Sie brauchen, um pad es, so dass es ist. PKCS #7-Auffüllung ist die häufigste.
Sehen die Wikipedia-Artikel zu AES für weitere Informationen.
AES ist eine block-Chiffre. Es verschlüsselt und entschlüsselt einen block von 128 bits (16 bytes).
AES_decrypt und AES_encrypt wirkt auf einen einzigen block zu einem Zeitpunkt. So, Sie erhalten nur die ersten 16 bytes. Haben Sie manuell zu entschlüsseln oder verschlüsseln von anderen Blöcken.
Wenn Sie wissen, die mode (wie CBC, ECB, etc.), Sie können die Funktionen aufrufen, die eine solche AES_decrypt_cbc etc.
Müssen Sie ändern Sie den code wie folgt (ich gebe nur ein Beispiel):
Wenn Sie sicher sind, über mode, call-cbc/ecb/cfb/ofb-Modus-Funktionen.
Im Fall von Zweifel, lassen Sie es mich bitte wissen.