rncryptor swift encryption

swift - rncryptor - No se pueden convertir los datos cifrados a String



rncryptor swift (1)

Estoy tratando de aprender a usar RNCryptor. Esto es lo que estoy usando:

let key = "1234" let original_text = "hello" let data = original_text.data(using: .utf8)! let encrypted_data = RNCryptor.encrypt(data: data, withPassword: key) print(String(data: encrypted_data, encoding: .utf8))

Esto imprime ''nil''. ¿Cómo puedo convertir encrypted_data a String?

Además, esto funciona:

try! print(String(data: RNCryptor.decrypt(data: encrypted_data, withPassword: key), encoding: .utf8))

pero este es el texto original y no el texto cifrado.


Los datos cifrados son un blob binario y, en la mayoría de los casos, no son una secuencia UTF-8 válida. Por lo tanto, la conversión a una cadena

String(data: encrypted_data, encoding: .utf8)

falla y devuelve nil . Si desea una representación de cadena de los datos cifrados, puede usar (por ejemplo) la codificación Base64:

print(encrypted_data.base64EncodedString())

o, usando

extension Data { func hexEncodedString() -> String { return map { String(format: "%02hhx", $0) }.joined() } }

de Cómo convertir datos a cadena hexagonal en swift , como una cadena codificada en hexadecimal:

print(encrypted_data.hexEncodedString())