- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道使用“NSSecureCoding”可以将数据安全地存储到磁盘,类似于钥匙串(keychain)作为信息安全存储的地方。
我还了解钥匙串(keychain)具有在同一提供商的应用程序之间共享的优势。如果忽略钥匙串(keychain)共享功能,是否可以说,与 NSSecureCoding 相比,将数据存储在钥匙串(keychain)中同样安全?
我有一个用户对象
class User: NSObject, NSSecureCoding {
private enum CodingKeys: String, CodingKey {
case test
}
public static var supportsSecureCoding: Bool {
return true
}
override init() {}
var test: String = "teeees"
func encode(with aCoder: NSCoder) {
aCoder.encode(self.test as NSString)
}
required init?(coder aDecoder: NSCoder) {
test = aDecoder.decodeObject(of: NSString.self, forKey: CodingKeys.test.rawValue)! as String
}
}
我存档
let user = User()
let data = NSKeyedArchiver.archivedData(withRootObject: user)
try! data.write(to: DocumentHelper.cashURLForID(id: "TTYYUU"))
TTYYUU的内容是:
6270 6c69 7374 3030 d401 0203 0405 06151658 2476 6572 7369 6f6e 5824 6f62 6a656374 7359 2461 7263 6869 7665 7254 24746f70 1200 0186 a0a4 0708 0d0e 5524 6e756c6c d209 0a0b 0c52 2430 5624 636c 61737380 0280 0356 7465 6565 6573 d20f 1011125a 2463 6c61 7373 6e61 6d65 5824 636c6173 7365 735f 1011 5365 6375 7265 436f6469 6e67 2e55 7365 72a2 1314 5f10 11536563 7572 6543 6f64 696e 672e 5573 6572584e 534f 626a 6563 745f 100f 4e53 4b657965 6441 7263 6869 7665 72d1 1718 54726f6f 7480 0108 111a 232d 3237 3c42 474a5153 555c 616c 7589 8ca0 a9bb bec3 00000000 0000 0101 0000 0000 0000 0019 00000000 0000 0000 0000 0000 0000 00c5
谁能展示解码原始信息的方法,它说格式是“NSPropertyList Binary Format_v1_0”,有人能展示如何从这个二进制文件中提取“teeees”吗?
最佳答案
类不是“安全的”,因为它的名称中包含此文本。没有详细描述如何、为什么(例如加密、完整性保护等)及其限制的安全性是无用的。该文档明确指出它仅能安全地防止对象替换攻击
。
这完全意味着替换文件或更改内容并不容易。
从来没有在任何地方声明它可以用于“将数据安全地存储到磁盘”。因此,NSSecureCoding
与 Keychain 相比用于完全不同的用例,Keychain 致力于为“一个或多个用户提供密码、 key 、证书和注释的安全存储”。
编辑:查看您添加的编码数据示例,它包含大量明文数据,包括 teeees
。您可以使用任何十六进制编辑器或 strings
命令查看它。
关于swift - NSSecureCoding 与钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49693795/
我正在了解 NSSecureCoding Apple 在 iOS 6 中引入的协议(protocol)。 据我目前的理解,只要一个类对其自身的实例进行编码/解码,就应该使用它,以防止替换攻击。 我想知
@objc(EventNotificationInfo) class EventNotificationInfo: NSObject, NSSecureCoding { pub
从 AppDelegate 我称之为: -(void)application:(UIApplication *)application handleWatchKitExtensionRequest:(
我知道使用“NSSecureCoding”可以将数据安全地存储到磁盘,类似于钥匙串(keychain)作为信息安全存储的地方。 我还了解钥匙串(keychain)具有在同一提供商的应用程序之间共享的优
我决定使用 NSSecureCoding 而不是 NSCoding,但我无法让它正常工作。 我预计以下代码会失败,因为我正在编码 NSString 但试图解码 NSNumber。然而,该对象在没有抛出
我有一个类 SGBContainer 的对象它有一个名为 objects 的数组包含类 SGBObject 的对象.目前,它们都实现了 NSCoding 但没有实现 NSSecureCoding。 -
在关注 Creating XPC Services guide 时在 Swift 中并尝试传递自定义 Foo 类,我发现为了使其正常工作,它必须位于动态库中。当它嵌入到两个目标时,与服务的连接失败并返
我在采用 NSSecureCoding 时遇到了问题。我对一个包含自定义类对象的数组进行编码,该类正确地采用了 NSSecureCoding。当我解码它时,传递类 NSArray(这是我编码的对象的类
我正在尝试从 .scn(最初是我转换为 .scn 的 DAE 文件)创建一个 SCNNode,当我这样做时,控制台会生成以下内容: [general] NSSecureCoding allowed c
我正在尝试将一段 Objective-C 代码转换为 Swift 代码。 objective-C : #import "SUCacheItem.h" #define SUCACHEITEM_TOKEN
我有一个变量 var pausedTime: TimeInterval? 我想使用 NSSecureCoding 对其进行编码和解码 到目前为止我有这个用于编码: aCoder.encode(paus
我整个下午都在用头撞墙试图弄清楚为什么这个类的解码失败。该类有一个属性是 Foo 对象的 NSArray。 Foo 符合 NSSecureCoding,我已经成功地自行编码和解码了该类。我在 init
我目前正在试用 iOS 10 Beta 并决定将我的 Swift 代码转换为 Swift 3。直到现在,我能够使用以下方法安全地解码字符串 coder.decodeObjectOfClass(NSSt
背景 我们有多个符合 NSSecureCoding 协议(protocol)的类。 @interface ClassA : NSObject // ... @end @interface Class
我有一些代码可以创建一个名为“content”的 NSSecureCoding 变量,我想将该变量转换为 NSData,然后可以将其制作成 UIImage 或发送到本地服务器。我该如何正确转换?我想要
我正在创建一个链接列表并使用容器对对象、下一个和上一个属性进行分组。与 Foundation 集合一样,我希望它能够实现 NSSecureCoding。这是声明: @interface ListCon
我正在尝试为我的应用制作一个 Action 扩展,用户可以在其中添加他的当前位置以及一些其他数据。在与 Apple Maps App 共享位置后,我调试了扩展程序,发现 Maps 发送了四个提供程序,
我正在使用 loadItemForTypeIdentifier:options:completionHandler: NSItemProvider 对象上的方法,用于通过 iOS 8 中的共享扩展从
根据Apple规范,当一个类支持NSSecureCoding时,它应该使用 decodeObjectOfClass:forKey: 在 initWithCoder 但是由于字典不知道其内容,它如何支持
我正在尝试对 SceneKit SCNMatrix4 进行安全编码,使其符合 NSSecureCoding,类似于以下内容: if let transform = aDecoder.decodeObj
我是一名优秀的程序员,十分优秀!