У меня есть кодовая база, которая хранит некоторые конфиденциальные данные в базе данных.Прежде чем сохранить данные в БД, я зашифровываю данные, используя эту библиотеку шифрования ( документы здесь ).
Для расшифровки я использую следующие
use \Defuse\Crypto\Crypto;
use \Defuse\Crypto\Exception as Ex;
// The following is inside a class, but for clarity I only copy pasted this part
try {
return Crypto::decrypt($aStr, Crypt::$cryptoKey);
} catch (Ex\InvalidCiphertextException $ex) { // VERY IMPORTANT
// Either:
// 1. The ciphertext was modified by the attacker,
// 2. The key is wrong, or
// 3. $ciphertext is not a valid ciphertext or was corrupted.
// Assume the worst.
die('The ciphertext has been tampered with! Message:'.$ex->getMessage());
}
// I've got some more catch blocks here but they're not relevant for this question
Этот код прекрасно работает, но сегодня я наткнулся на одну запись базы данных, которая заставляет все это погибнуть при этом InvalidCiphertextException
улове.Я пробовал вручную с некоторым примером кода, но всегда получаю InvalidCiphertextException
.
Я предполагаю, что данные повреждены, но я не уверен, так ли это.
Запись находится в середине таблицы с 15000 записями, все в порядке, и не было никаких внезапных изменений в этой части кода целую вечность.
Могу ли я еще что-нибудь исследовать (илидаже расшифровать) это?Или я могу найти дополнительную информацию об этой записи или способе ее дальнейшей отладки?
Все советы приветствуются!