Достоверно ли CommonCrypto знает, когда мой ключ недействителен при расшифровке зашифрованного текста?

#ios #macos #commoncrypto

#iOS #macos #commoncrypto

Вопрос:

Когда я пытаюсь расшифровать зашифрованный текст, используя неправильный ключ, CCCrypt возвращает ошибку kCCDecodeError .

Вопрос в том, делает ли это это надежно (например, гарантирую ли я, что в случае успешного возврата мой входной ключ был ключом, используемым для шифрования обычного текста, и гарантирую ли я, что мои выходные данные — это мой исходный обычный текст), и как он может даже узнать, правильный ли мой ключ или нет?нет?

Насколько я понял криптографию, движок не может предсказать, действителен ли ключ, и должен просто выдавать мне случайный шум в качестве выходных данных и успешного кода возврата.

Ответ №1:

Если вы указали заполнение PCKS7 (kCCOptionPKCS7Padding), то он может определить, не удалось ли вам расшифровать его должным образом — в большинстве случаев. Существует вероятность того, что случайный результат неправильного ключа может привести к тому, что последние биты сообщения будут выглядеть как допустимое заполнение PKCS7.

Единственное, что он может обнаружить, — это если ваш ключ вообще не имеет допустимой длины.

Комментарии:

1. Итак, как я должен знать, что мое дешифрование прошло успешно или не удалось?

2. @KyleJurick Я бы рекомендовал, чтобы ваши данные открытого текста были в каком-то формате, который можно проверить. Например, XML. В более общем плане, я думаю, вы можете сказать, что это не сработало, если данные, которые вы извлекли из него, бесполезны.