Hallo, ich möchte gerne sensible Daten mit der aes-256 Verschlüsselung in eine Datenbank speichern.
So wie ich es auch gelesen habe, habe ich das Datenbankfeld mit dem Typ Binary eingestellt. Jedoch schaffe ich es einfach nicht, dass der Eintrag in Klartext angezeigt wird. Entweder kommt Mist raus oder ein leerer String.
Wenn ich z.Bsp. Test verschlüssele, kommt folgender binary-Wert raus (Anhang) Bei der entschlüsselung dieser bekomme ich entweder einen leeren String oder sowas in der Art zurück: "4f948f0956d00d2af04ea1abd299e335e06e01c1d5679bf2c35afba51896c8b9�m;k�v� s*_F��_D�n`ޞTq��"
Habt ihr eine Idee. woran es liegen könnte.
PHP:
public static function encrypt($plain, $key, $hmacSalt = null)
{
self::_checkKey($key, 'encrypt()');
if ($hmacSalt === null) {
$hmacSalt = static::$_salt;
}
// Generate the encryption and hmac key.
$key = mb_substr(hash('sha256', $key . $hmacSalt), 0, 32, '8bit');
$crypto = static::engine();
$ciphertext = $crypto->encrypt($plain, $key);
$hmac = hash_hmac('sha256', $ciphertext, $key);
return $hmac . $ciphertext;
}
So wie ich es auch gelesen habe, habe ich das Datenbankfeld mit dem Typ Binary eingestellt. Jedoch schaffe ich es einfach nicht, dass der Eintrag in Klartext angezeigt wird. Entweder kommt Mist raus oder ein leerer String.
PHP:
public static function decrypt($cipher, $key, $hmacSalt = null)
{
self::_checkKey($key, 'decrypt()');
if (empty($cipher)) {
throw new InvalidArgumentException('The data to decrypt cannot be empty.');
}
if ($hmacSalt === null) {
$hmacSalt = static::$_salt;
}
// Generate the encryption and hmac key.
$key = mb_substr(hash('sha256', $key . $hmacSalt), 0, 32, '8bit');
// Split out hmac for comparison
$macSize = 64;
$hmac = mb_substr($cipher, 0, $macSize, '8bit');
$cipher = mb_substr($cipher, $macSize, null, '8bit');
$compareHmac = hash_hmac('sha256', $cipher, $key);
if (!static::_constantEquals($hmac, $compareHmac)) {
return false;
}
$crypto = static::engine();
return $crypto->decrypt($cipher, $key);
}
Wenn ich z.Bsp. Test verschlüssele, kommt folgender binary-Wert raus (Anhang) Bei der entschlüsselung dieser bekomme ich entweder einen leeren String oder sowas in der Art zurück: "4f948f0956d00d2af04ea1abd299e335e06e01c1d5679bf2c35afba51896c8b9�m;k�v� s*_F��_D�n`ޞTq��"
Habt ihr eine Idee. woran es liegen könnte.