Создание ключа RSA всегда ноль - PullRequest
0 голосов
/ 03 января 2019

Итак, у меня есть требование, где я должен зашифровать Strings, используя RSA .

Посмотрите на этот буфер обмена Example

Так что после некоторых исследований я обнаружил, что этот может быть правильным ответом для моего случая,

После изменения кода, чтобы сформировать это на последнем этапе.

 private func encrypt(with key: String) {
    let serverPublicKey = key.data(using: .utf8)?.base64EncodedData()
    guard let serverPublicKey2 = serverPublicKey else { return }
    let data2 = Data(base64Encoded: serverPublicKey2)
    guard  let data = data2 else { return }
    let keyDict:[NSObject:NSObject] = [
        kSecAttrKeyType: kSecAttrKeyTypeRSA,
        kSecAttrKeyClass: kSecAttrKeyClassPublic,
        kSecAttrKeySizeInBits: NSNumber(value: 2048),
        kSecReturnPersistentRef: true as NSObject
    ]
    let publickeysi = SecKeyCreateWithData(data as CFData, keyDict as CFDictionary, nil)
    guard let publicKeySi = publickeysi else { return }
    //Encrypt a string with the public key
    let message = "This is my message." // this field in bullet point one 
    let blockSize = SecKeyGetBlockSize(publicKeySi)
    var messageEncrypted = [UInt8](repeating: 0, count: blockSize)
    var messageEncryptedSize = blockSize
    var status: OSStatus!
    status = SecKeyEncrypt(publickeysi!, SecPadding.PKCS1, message, message.count, &messageEncrypted, &messageEncryptedSize)
    if status != noErr {
        print("Encryption Error!")
        return
    }
}
  • Я не знаю, что означает поле message, и, исходя из моих требований, это то место, где мне нужно разместить свой UUID / Pin & server PublicKey.Функция
  • экранирует замыкание в SecKeyCreateWithData, поскольку всегда возвращает nil, Чего мне не хватает.
...