Sie müssen den Initialisierungsvektor irgendwo speichern. Da im CBC-Modus der IV der "nullte" Block des Chiffretextes ist, speichern manche Leute ihn als Präfix für den Chiffretext. Die meisten Entschlüsselungsbibliotheken auf niedriger Ebene erwarten dies jedoch nicht, daher muss die Anwendung normalerweise einen Wrapper bereitstellen, der das Hinzufügen dieses Präfixes nach der Verschlüsselung und das Entfernen vor der Entschlüsselung übernimmt.
Idealerweise sollten Sie verschlüsselte Werte mit einigen Metadaten speichern, die den verwendeten Verschlüsselungsalgorithmus sowie alle erforderlichen Parameter angeben und angeben, welcher Schlüssel (siehe unten!) Verwendet wird. Dies würde die IV für eine Blockchiffre beinhalten, die CBC verwendet. Ein Standardformat dafür ist die Cryptographic Message Syntax, oder PKCS # 7. Da es sich um einen Standard handelt, verfügen Sie wahrscheinlich über mehrere Optionen für eine Open-Source-Bibliothek, die mit dem Format umgehen kann.
Mithilfe dieser Metadaten können Sie beispielsweise Schlüssel im Zeitverlauf drehen oder Daten in neue Algorithmen migrieren. Sie müssen nicht jeden Wert auf dieselbe Weise mit demselben Schlüssel verschlüsseln.
Hinweis: Wenn ich sage, dass die Metadaten den verwendeten Schlüssel anzeigen, bedeutet dies natürlich nicht, dass der Schlüssel selbst enthalten ist! Bei Pre-Shared Keys ist es nur eine Bezeichnung, die Ihnen sagt, welcher Schlüssel auf Ihrem großen Schlüsselbund die Payload entschlüsseln wird. Für die kennwortbasierte Verschlüsselung gibt es Informationen darüber, wie aus dem implizierten Kennwort ein korrekter Schlüssel abgeleitet werden kann.
Verwenden Sie den gleichen Schlüssel für mehr als eine Verschlüsselungsoperation? –
Ja ich benutze den gleichen Schlüssel für die Verschlüsselung aller Daten auf DB – Giorgio
Die IV ist kein geheimer Wert; Sie können es neben jedem verschlüsselten Wert im Klartext speichern. –