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