Die folgende Ver- und Entschlüsselung funktioniert normal im MySQL-Modus (aes-256-cbc)
SET block_encryption_mode = 'aes-256-cbc'; select cast( aes_decrypt( from_base64('StThdNXA+CWvlg+of/heJQ=='), sha2(concat('ssshhhhhhhhhhh!!','ENCRYPTION_KEY$&'),256), 'ssshhhhhhhhhhh!!' ) as char); select to_base64(aes_encrypt( 'test_value', sha2(concat('ssshhhhhhhhhhh!!','ENCRYPTION_KEY$&'),256), 'ssshhhhhhhhhhh!!' ));
Ich versuche erfolglos, einen in MySQL verschlüsselten Wert zu entschlüsseln.
Das Folgende ist der Schlüssel in meiner MySQL-Abfrage sha256 (Salz+Schlüssel)
select sha2(concat('ssshhhhhhhhhhh!!','ENCRYPTION_KEY$&'),256);
Gleicher Wert, den ich in Java erreichen konnte:
Hashing.sha256().hashString("ssshhhhhhhhhhh!!ENCRYPTION_KEY$&", StandardCharsets.UTF_8).toString();
Gibt es eine benutzerdefinierte Möglichkeit, Hüpfburgen/andere APIs dazu zu bringen, denselben Schlüssel für die Entschlüsselung zu verwenden?
MySQL内部使用OpenSSL算法,以EVP_BytesToKey作为推导函数。看看这个网址
MySQL加密解密示例:
有一个 JAR 支持此 EVP_BytesToKey 密钥派生函数。
}
这样终于实现了互操作性!希望这对尝试做同样事情的人有所帮助。