Ich möchte MySQL Daten mit AES automatisch verschlüsseln, so dass ich es nicht in der Anwendungsschicht tun muss. Erste Frage: Ist das überhaupt möglich? Ich habe versucht, dass einfache Ansatz:MySQL ändern Typ während Trigger vor dem Einfügen
Tabelle:
measurement
id INT
value VARBINARY(50)
Trigger:
CREATE DEFINER = CURRENT_USER TRIGGER `openeHealth`.`measurement_BEFORE_INSERT` BEFORE INSERT ON `measurement` FOR EACH ROW
BEGIN
SET @@session.block_encryption_mode = 'aes-256-ecb';
DECLARE vKey = RANDOM_BYTES(256);
SET NEW.value HEX(AES_ENCRYPT(value, vKey));
END
Es ist mein erster Versuch zu verwenden löst so vielleicht ist es ein einfacher Fehler oder vielleicht MySQL unterstützt nicht etwas so was.
Meine Testinstallation hat einen doppelten Wert als 'Wert'.
Und ja, mir ist bewusst, dass ich meinen zufälligen Schlüssel irgendwo speichern muss. Hat also vielleicht jemand eine Idee, wie man eine andere Tabelle aufgrund "Einfügen vor" auf den neuesten Stand bringt?
Vielen Dank
Fehlermeldung:
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.., 1)' at line 1
SQL Code:
INSERT INTO `openeHealth`.`measurement` (`id`, `owner_id`, `type_id`, `value`, `device_id`) VALUES (1, 1, 1, ..., 1)
generierter Code von MySQL Workbench:
START TRANSACTION;
USE `openeHealth`;
INSERT INTO `openeHealth`.`measurement` (`id`, `owner_id`, `type_id`, `value`, `device_id`) VALUES (1, 1, 1, ..., 1);
COMMIT;
1), wenn Sie Daten auf diese Weise zu verschlüsseln, ist es nicht durchsuchbar sein würde. Bist du sicher, dass du das willst? 2) Bitte geben Sie die genaue Fehlermeldung oder das unerwartete Verhalten an, das Sie bei der Verwendung Ihres eigenen Codes festgestellt haben. – Shadow
Ja, ich möchte nicht, dass der Wert durchsuchbar ist, nur die ID des Wertes sollte im Klartext stehen. Ich habe die Frage aktualisiert. – Timo