【发布时间】:2018-01-29 11:58:04
【问题描述】:
我有一个 JSON 文件和一个相关的类。我通过调用 init?(data: Data) 初始化程序对其进行解码。我正在从端点获取这个 JSON。我想用 SHA-256 加密 URL 文本。我的问题是我想在解码数据时解密这个 URL 字符串。所以在解码URL时,需要调用一个函数。有什么可能的方法吗?
PS:我知道我可以编写加密文本并在我将使用的地方对其进行解密,但我想将此作为最后的选择。
struct TableCellData: Codable {
let type: Int
let cellText: String
let cellImage: String?
let url: URL?
let detailText: String?
let tableID: Int?
enum CodingKeys: String, CodingKey {
case type = "type"
case cellText = "cell_text"
case cellImage = "cell_image"
case url = "url"
case detailText = "detail_text"
case tableID = "table_id"
}
}
extension TableCellData {
init?(data: Data) {
guard let me = try? JSONDecoder().decode(TableCellData.self, from: data) else { return nil }
self = me
}
init?(_ json: String, using encoding: String.Encoding = .utf8) {
guard let data = json.data(using: encoding) else { return nil }
self.init(data: data)
}
init?(fromURL url: String) {
guard let url = URL(string: url) else { return nil }
guard let data = try? Data(contentsOf: url) else { return nil }
self.init(data: data)
}
var jsonData: Data? {
return try? JSONEncoder().encode(self)
}
var json: String? {
guard let data = self.jsonData else { return nil }
return String(data: data, encoding: .utf8)
}
}
【问题讨论】:
-
SHA-256 不是加密算法。它是一种单向哈希算法。根据设计,没有有效的方法来反转 SHA-256 哈希以检索原始数据(如果有有效的方法,SHA-256 将不是加密哈希)。这里的“高效”并不意味着“快”。这意味着“比仅仅猜测每个可能的 URL 并查看它是否正确要好。”您想在这里通过加密实现什么目标?
-
@RobNapier 实际上我的问题与算法无关。认为它是 AES-256,而不是 SHA-256...
标签: ios json swift encryption decode