(엑스 코드 (8), 스위프트 3)CryptoSwift - 문자열에 UINT8 배열을 변환은 해결 전무
전무와 같은 결과를 cipherstring, 내가 어떤 이유로, 문자열을 암호화하고 coredata에 저장하고자하고있는 CryptoSwift 라이브러리를 사용하여 같은 , 암호문 (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/(롭 네이피어의 대답 당) 솔루션
// 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)
코어 데이터에 바이너리 데이터를 저장할 수 있으므로 암호화 텍스트를 * 해당 용도의 문자열로 변환 할 필요가 없습니다. –
감사합니다.이 새로운 기능으로 데이터베이스 버전을 피하려고했습니다. 나는 어쨌든 버전 관리에 익숙해 져야한다고 생각한다. – breakbadjames