Разница между SecKeyCreateEncryptedData и SecKeyEncrypt в swift 3
При попытке зашифровать блок простых данных с помощью SecKeyCreateEncryptedData, он шифрует простые данные с использованием указанного алгоритма и работает нормально. Фрагмент кода, который я использовал для шифрования,
SecKeyCreateEncryptedData(publicKey.underlying,SecKeyAlgorithm.eciesEncryptionSt
andardX963SHA1AESGCM,cdata!, &error)
Но когда я пытаюсь сделать то же самое шифрование с использованием SecKeyEncrypt, оно терпит неудачу с возвращаемым значением (-50). Фрагмент кода, используемый для моего шифрования:
SecKeyEncrypt(publicKey.underlying as SecKey, .PKCS1, digestBytes,
newdata.length, &signatureBytes, &signatureLength)
И я также не могу получить описание ошибки для кода ошибки -50.
0 ответов
Вот общая разница между этими двумя функциями, а не только Swift.
SecKeyCreateEncryptedData
Функция предназначена для замены использования SecKeyEncrypt
поскольку он доступен только для iOS 10+, и официальное руководство Apple использует его. Хотя обе функции занимает SecKey
в качестве параметра способ получения экземпляра также отличается.
если ты publicKey
работает нормально для SecKeyCreateEncryptedData
Скорее всего, то же самое publicKey
не будет работать для SecKeyEncrypt
функция.
Чтобы правильно сгенерировать SecKey
за SecKeyEncrypt
функция, вам нужно
- Получить
SecCertificate
используяSecCertificateCreateWithData
, Обратите внимание, что сертификат должен быть в.der
формат. - Создать и оценить
SecTrust
на основеSecCertificate
Вы только что создали. - Получить
SecKey
отSecTrust
Вы можете найти более подробную информацию здесь Как я могу получить SecKeyRef из файла DER/PEM.