Расшифровка AES с использованием CommonCrypto - некоторые символы отсутствуют

{
  "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. Кто-нибудь знает, почему так происходит и как это исправить?


person Lynn    schedule 19.06.2019    source источник


Ответы (1)


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

person Lynn    schedule 19.06.2019