无法将加密数据转换为字符串 [英] Can't convert encrypted data to String

查看:143
本文介绍了无法将加密数据转换为字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试学习使用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))

打印零。如何将 encrypted_data 转换为字符串?



此外,这个 工作:

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

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

解决方案

加密数据是一个二进制的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()
}
}

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

  print(encrypted_data.hexEncodedString())


I am trying to learn to use RNCryptor. Here is what I am using:

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

This prints 'nil'. How can I convert encrypted_data to a String?

Also, this does work:

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

but this is the original text and not the cipher text.

解决方案

The encrypted data is a binary blob, and in most cases not a valid UTF-8 sequence. Therefore the conversion to a string

String(data: encrypted_data, encoding: .utf8)

fails and returns nil. If you want a string representation of the encrypted data then you can use (for example) the Base64 encoding:

print(encrypted_data.base64EncodedString())

or, using

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

from How to convert Data to hex string in swift, as a hex-encoded string:

print(encrypted_data.hexEncodedString())

这篇关于无法将加密数据转换为字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆