我正在尝试学习使用 RNCryptor。这是我正在使用的:
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))
这会打印“nil”。我怎样才能转换encrypted_data
到一个字符串?
还有,这个does work:
try! print(String(data: RNCryptor.decrypt(data: encrypted_data, withPassword: key), encoding: .utf8))
但这是原文而不是密文。
加密数据是二进制 blob,并且在大多数情况下not一个有效的
UTF-8 序列。因此转换为字符串
String(data: encrypted_data, encoding: .utf8)
失败并返回nil
。如果你想要一个字符串表示
加密数据然后您可以使用(例如)Base64 编码:
print(encrypted_data.base64EncodedString())
或者,使用
extension Data {
func hexEncodedString() -> String {
return map { String(format: "%02hhx", $0) }.joined()
}
}
from 如何在 swift 中将数据转换为十六进制字符串,作为十六进制编码的字符串:
print(encrypted_data.hexEncodedString())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)