4
(Xcode中8,夫特3)CryptoSwift - 转换UINT8数组字符串解析为零
使用CryptoSwift库,我想加密的字符串,并将其存储在coredata,出于某种原因,cipherstring结果零尽管具有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将字节数组的数据对象。这也结果为零。
EDIT /溶液(每罗布纳皮尔回答)
// 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