4
(Xcodeの8、スウィフト3)CryptoSwiftは - 文字列に変換するUINT8配列はCryptoSwiftライブラリを使用してnilを
として解決し、私がnilとして結果をcipherstring、何らかの理由で、文字列を暗号化し、coredataに保管したいのです、暗号文128個の値を有するにもかかわらず、私はまた、データを使用して試みた
let aes = try AES(key: pw, iv: nil, blockMode: .CBC, padding: PKCS7())
let ciphertext = try aes.encrypt(token.utf8.map({$0}))
let cipherstring = String(bytes:ciphertext, encoding: String.Encoding.utf8) // always nil
:文字列のオーバーロード、データオブジェクトへのバイト配列をconvering。これもnilとして返されます。
EDIT(ロブ・ネーピアの答えあたり)/ SOLUTION
// encode/convert to string
let aes = try AES(key: pw, iv: nil, blockMode: .CBC, padding: PKCS7())
let ciphertext = try aes.encrypt(token.utf8.map({$0}))
let cipherstring = Data(bytes: ciphertext).base64EncodedString()
// decode
let aes = try AES(key: pw, iv: nil, blockMode: .CBC, padding: PKCS7())
let cipherdata = Data(base64Encoded: cipherstring)
let ciphertext = try aes.decrypt(cipherdata!.bytes)
let token = String(bytes:ciphertext, encoding:String.Encoding.utf8)
バイナリデータをコアデータに格納することができます。暗号テキストを* that *目的の文字列に変換する必要はありません。 –
ありがとう、私はこの新しい機能を持つデータベースバージョンを避けようとしていました。私は、とにかくバージョン管理に慣れるべきだと思います。 – breakbadjames