2017-05-09 1 views
1

문자열을 암호화하여 키 체인에 저장하려고합니다. 이것은 내가 마지막 줄, 내가 "[UINT8] 데이터 유형으로 변환 할 수 없습니다"이 오류에 키 체인에 암호화 된 문자열 저장

//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) 

을했을 것입니다.
기본적으로 messageEncrypted를 String으로 변환하여 키 체인에 저장할 수 있습니다.
이 키 체인 Lib을 사용하고 있습니다. https://github.com/jrendel/SwiftKeychainWrapper
이 경우 데이터를 String으로 입력해야합니다.
도움이 될 것입니다. 키 체인에 암호화 된 데이터를 저장하는 것이 이동하지 않을 수도 있지만 클라이언트 요구 사항이라는 것을 알고 있습니다. 사전에

덕분에

답변

1

이 필요한 모든 Data 인스턴스에 [UInt8]에서 messageEncrypted을 변환하는 것 같다, 그리고 fortunatelly fitting initializer이 :

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