Расшифровка iOS 13 AES с неработающим Crypto Swift - PullRequest
0 голосов
/ 01 октября 2019

У меня есть приложение, которое использует расшифровку AES256 для аутентификации. Для этого я использую библиотеку Crypto Swift .

До сих пор это всегда работало, но с выходом iOS 13 расшифровка не работает.

Вот код, который я использую для расшифровки:

func aesDecrypt(key: String) throws -> String {
    let data = Serializer.hexaToBytes(self)
    let key = Serializer.hexaToBytes(key)
    let decrypted = try! AES(key: key, blockMode: ECB(), padding: .pkcs7).decrypt(data)
    let decryptedData = Data(decrypted)
    return String(bytes: decryptedData.bytes, encoding: .utf8) ?? "Could not decrypt"
}

String(bytes: decryptedData.bytes, encoding: .utf8) всегда возвращает ноль ...

Почему это может быть и что я должен сделать, чтобы сделать этоработать снова?

Любая помощь будет оценена :))

1 Ответ

1 голос
/ 01 октября 2019

Наиболее распространенная причина подобных проблем заключается в том, что где-то вы используете Data.description для вычисления шестнадцатеричной строки. Это никогда не было правильно, но было возможно обойтись без него до iOS 13. В iOS 13 формат был изменен (формат никогда не обещал остаться прежним), и это сломало много вещей, которые полагались на этостабильный.

Следующее, что я проверю, это Serializer.hexaToBytes, чтобы убедиться, что оно правильно реализовано и возвращает то, что вы ожидаете.

Учитывая, что эта конкретная функция написана так, что неТщательно проверяйте на наличие ошибок (и использует очень опасный режим, такой как ECB), вероятно, что связанные функции также небрежны с ошибками. Проверьте каждый, чтобы увидеть, возвращает ли он ожидаемые вами значения.

...