У меня есть кодовая база, которая хранит некоторые конфиденциальные данные в базе данных. Перед тем, как сохранить данные в БД, я зашифровываю их, используя эта крипто библиотека (документы здесь).
Чтобы расшифровать его, я использую следующее
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 записями, и все в порядке, и никаких изменений в этой части кода не происходило целую вечность.
Могу ли я что-нибудь сделать, чтобы исследовать (или даже расшифровать) это? Или я могу найти больше информации об этой записи или способе ее дальнейшей отладки?
Все советы приветствуются!
Задача ещё не решена.
Других решений пока нет …