2017-05-09 1 views
1

Ich versuche, eine Zeichenfolge zu verschlüsseln und es im Schlüsselbund speichern. Das ist, was ichSpeicher einen verschlüsselten String in Keychain

//Generate RSA private and public keys 
    let parameters: [String: AnyObject] = [ 
     kSecAttrKeyType as String: kSecAttrKeyTypeRSA, 
     kSecAttrKeySizeInBits as String: 1024 as AnyObject 
    ] 
    SecKeyGeneratePair(parameters as CFDictionary, &publicKey, &privateKey) 

    let blockSize = SecKeyGetBlockSize(publicKey!) 
    var messageEncrypted = [UInt8](repeating: 0, count: blockSize) 
    var messageEncryptedSize = blockSize 

    status = SecKeyEncrypt(publicKey!, SecPadding.PKCS1, data, data.characters.count, &messageEncrypted, &messageEncryptedSize) 

    let encryptedString = String(data: messageEncrypted, encoding: .utf8) 

In der letzten Zeile getan habe, bekomme ich diesen Fehler „umwandeln kann nicht vom Typ [UInt8], um Daten“.
Ich möchte im Wesentlichen messageEncrypted in String konvertieren, so dass ich es im Schlüsselbund speichern kann.
Ich benutze dieses Schlüsselbund Lib - https://github.com/jrendel/SwiftKeychainWrapper
Dies erfordert, dass ich die Daten als String eingeben.
Jede Hilfe wird geschätzt. Ich verstehe, dass das Speichern verschlüsselter Daten im Schlüsselbund möglicherweise nicht der richtige Weg ist, aber es ist eine Kundenanforderung.

Vielen Dank im Voraus

Antwort

1

Es scheint, dass alles benötigt wird, ist Ihr messageEncrypted[UInt8]-Data Instanz zu konvertieren, und Fortunatelly gibt es eine fitting initializer:

let encryptedData = Data(bytes: messageEncrypted) 
let encryptedString = String(data: encryptedData, encoding: .utf8) 
Verwandte Themen