Расшифровка AES с использованием CommonCrypto - некоторые символы отсутствуют - PullRequest
0 голосов
/ 19 июня 2019
{
  "order_id": 5,
  "no": "19000038",
  "id": 10,
  "name": "John Doe"
}

Я шифрую вышеуказанные данные с помощью онлайн-сайта шифрования AES: https://www.devglan.com/online-tools/aes-encryption-decryption

с использованием режима CBC, размера ключа 256 и выходного текстового формата Base64.Я скопировал игровую площадку с помощью @ / backslash-f по этой ссылке: Шифрование AES в быстром

и ниже - как я пишу для расшифровки зашифрованных данных:

let stringData = Data(base64Encoded: stringValue, options: .ignoreUnknownCharacters)

            do {
                let aes = try AES(keyString: key)

                let decryptedData: String = try aes.decrypt(stringData!)
                print("String decrypted:\t\t\t\(decryptedData)")
            }
            catch {
                print("Something went wrong: \(error)")
            }

данные успешно расшифрованы, но отсутствуют символы.Ниже приведены расшифрованные данные (как напечатано в коде):

String decrypted:           ,

"order_no": "19000038",

"id": 10,

"name": "John Doe"

}

, как вы можете видеть, первая фигурная скобка до "order_id": 5 пропал, отсутствует.Кто-нибудь знает, почему это происходит и как это исправить?

1 Ответ

0 голосов
/ 19 июня 2019

Разобрался с проблемой. Это проблема заполнения. CommonCrypto по умолчанию устанавливает отступ в pkcs7, и мы не можем его изменить. Затем я использую библиотеку CryptoSwift и изменяю отступ на noPadding, тогда он работает как чудо!

...