Шифрование AES/GCM/NoPadding в Swift iOS (минимальное развертывание 12.1) не дает ожидаемой длины зашифрованного текстаIOS

Программируем под IOS
Anonymous
Шифрование AES/GCM/NoPadding в Swift iOS (минимальное развертывание 12.1) не дает ожидаемой длины зашифрованного текста

Сообщение Anonymous »

Я реализую шифрование AES/GCM/NoPadding в Swift для iOS с минимальной целевой версией развертывания 12.1. Я пытаюсь добиться функциональности, аналогичной приведенному ниже коду Java:

Код: Выделить всё

Cipher cipherAes = initCipher(Cipher.ENCRYPT_MODE, key, iv);
byte[] encryptedMessageByte = cipherAes.doFinal(messageBytes);

byte[] cipherByte = ByteBuffer.allocate(iv.length + salt.length + encryptedMessageByte.length)
.put(iv)
.put(salt)
.put(encryptedMessageByte)
.array();
В Swift я написал следующий код:

Код: Выделить всё

let gcm = GCM(iv: iv.bytes, additionalAuthenticatedData: nil, tagLength: tagLength)
let aes = try AES(key: key.bytes, blockMode: gcm, padding: .noPadding)
let encryptedMessage = try aes.encrypt(message.bytes)
let cipherData = Data(iv) + Data(salt) + Data(encryptedMessage)
Однако длина EncryptedMessage в Swift отличается от длины EncryptedMessageByte в Java. Я ожидал, что оба дадут зашифрованный текст одинаковой длины.
Гарантия:
Я уверен, что длины ключа, iv и соли одинаковы в реализациях Java и Swift. .
Вопрос:
Нужны ли какие-либо дополнительные конфигурации или параметры для шифрования AES/GCM/NoPadding в Swift, чтобы соответствовать поведению в Java?>

Подробнее здесь: https://stackoverflow.com/questions/786 ... nt-produce

Вернуться в «IOS»