当前位置:  开发笔记 > IOS > 正文

无法将加密的数据转换为String

如何解决《无法将加密的数据转换为String》经验,为你挑选了1个好方法。

我正在尝试学习使用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为字符串?

此外,这确实有效:

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

但这是原始文本,而不是密文。



1> Martin R..:

加密的数据是二进制Blob,在大多数情况下不是有效的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()
    }
}

从如何将数据转换为swift中的十六进制字符串,作为十六进制编码的字符串:

print(encrypted_data.hexEncodedString())

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有