首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用nscoder对自定义对象进行编码并保存到nsuserdefaults是否已加密?

使用NSCoder对自定义对象进行编码并保存到NSUserDefaults是不会自动加密的。NSUserDefaults是一个轻量级的数据存储工具,它将数据以plist文件的形式保存在应用的沙盒中。虽然NSUserDefaults提供了一些基本的数据加密功能,但它并不适用于对敏感数据进行加密保护。

如果需要对自定义对象进行加密保存,可以考虑使用其他加密算法或框架,例如AES加密算法、Keychain等。这些工具可以对数据进行加密处理,确保数据在存储和传输过程中的安全性。

对于iOS开发,可以使用CommonCrypto框架来实现AES加密。具体步骤如下:

  1. 导入CommonCrypto框架:在项目的Build Phases中的Link Binary With Libraries中添加Security.framework。
  2. 引入头文件:在需要使用加密功能的文件中引入头文件#import <CommonCrypto/CommonCryptor.h>。
  3. 编写加密方法:使用AES加密算法对自定义对象进行加密处理。例如可以使用CCCrypt函数来进行加密操作。
  4. 编写解密方法:使用相同的密钥和算法对加密后的数据进行解密处理。

在加密过程中,需要注意密钥的安全性和管理,建议使用安全的密钥管理方案,如Keychain来保存密钥。

总结:使用NSCoder对自定义对象进行编码并保存到NSUserDefaults不会自动加密,如果需要对数据进行加密保护,可以考虑使用其他加密算法或框架,如AES加密算法和Keychain。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

编码篇-持久化NSUserDefaults

前言 NSUserDefaults类,以字典形式保存数据,IOS会自动把字典中的键值对转换成对应的XML文件(也就是plist文件),这个文件会被保存到APP的沙盒目录中(路径为Library/Preferences...此时依然是'color'=='red'; 储存自定义对象 使用归档存储(真的储存) 一个NSUserDefaults对象必须是属性表,这也就是说我们可以存储NSData,NSString,NSNUmber...如果你想存储其他类型的对象,我们可以将其归档创建一个NSData来实现存储。...让这个自定义类实现协议中的 - (id) initWithCoder: (NSCoder *)coder方法和 - (void) encodeWithCoder: (NSCoder...*)coder方法 然后把该自定义的类对象编码到NSData中,再从NSUserDefaults进行读取。

1.2K10

IOS开发问题索引(七)

举个例子,比如杂志、新闻、地图应用使用的数据库缓存文件和可下载内容应该保存到这个文件夹。 3.tmp: 只是临时使用的数据应该保存到 /tmp 文件夹。...读取和写入自定义对象 http://blog.csdn.net/chyroger/article/details/5785297 NSUserDefaults可以存取一些短小的信息。...如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。不信可以试试,如果你成功的请告诉我。 那怎么办呢?...方法(obj-c的协议protocol就是java的接口interface,就是C++的纯虚函数),然后把该自定义的类对象编码到NSData中,再从NSUserDefaults进行读取。...如果一个自定义类中由另一个自定义对象,那么所有嵌套的类都要实现。

1.1K40

iOS开发--常用的数据存储方式

、preference(偏好设置) 3、NSKeyedArchiver归档(NSCoding) 4、SQLite3 5、Core Data 1、plist文件存储-(沙盒存储) 注意:不可以存储自定义对象...,一个对象能不能使用plist存储,可以通过看他有没有write to file方法 存入: // 获取沙盒路径 NSString *cachePath = NSSearchPathForDirectoriesInDomains...arrayWithContentsOfFile:filepath]; NSLog(@"%@", arr); 2、偏好设置-(沙盒存储) ** 1.不需要关心文件名** ** 2.快速做键值存储..."name"]; NSLog(@"%@", str); 3、归档-(沙盒存储) 可以存储自定义对象 这里介绍自定义一个person对象 实现这份协议里面的方法让自定义对象里面的属性可以存储...)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_name forKey:@"name"]; } // 读取name属性赋值

85320

iOS开发——数据持久化之归档

在实际的项目开发中,数据持久化是我们必须要考虑的一个事情,如何把我们需要的数据进行持久化处理。...在此之前,一些轻量级的数据类型我一般比较喜欢用NSUserDefaults来存储,因为首先这是一个单例,而且使用简便,数据之间传递自由,所以很适合用来保存简单的数据。...而昨天我在实际工作中,有一个数组NSMutableArray需要存储,但是使用时,报了一个错误 reason: '*** -[NSUserDefaults setObject:forKey:]: attempt...那么自定义对象的归档显得重要的多,因为很多时候我们都要在程序退出时保存数据,再程序恢复时重新加载,那么,归档便是一个好的选择。 接下来我们来讲讲NSKeyedArchiver的使用。...以上就是最简单的归档解档数据持久化的实现方式,至于如何用runtime进行自动归档解档,就又需要日后深入研究了。

59110

iOS学习——iOS常用的存储方式

读取时使用arrayWithContentsOfFile:方法 2.2 preference(偏好设置) preefrence(偏好设置)顾名思义就是用户在使用过程中App的一些状态和自定义设置状态的保存...一般对于一些基本的用户设置,因为数据量很小,我们可以使用OC语言中的NSUserDefaults类来进行处理。使用方法很简单,只需要调用类中的方法即可。...2.3  NSKeyedArchiver(归档) 之前说了,不管是NSUserDefaults 或者是 plist 都不能对自定义对象进行存储,OC提供了解归档恰好解决这个问题。...一个用来说明如何将对象编码到归档中,另一个说明如何进行解档来获取一个新对象。...但是沙盒中只能保存OC中的基本数据,自定义对象不能直接存入,但是可以通过归档存为.data文件。

2.8K100

iOS应用数据存储(数据持久化)的常用方式一、iOS数据持久化方式二、应用沙盒(应用程序的文件夹)三、使用方法

(4)SQLite3,当非常大量的数据存储时使用 (5)Core Data,就是SQLite的封装 关于bundle路径和sandbox沙河路径: (1)bundle路径:应用程序 (APP)...路径获取: 通过NSUserDefaults类存取该目录下的设置信息 ---- 三、使用方法 1、属性列表 属性列表是一种XML格式的文件,拓展名为plist,如果对象是NSString、NSDictionary...、NSArray、NSData、NSNumber等类型,就可以使用, 注意:不能存储自定义对象,会失败的 存方法:writeToFile 读方法:如字典, dictionaryWithContentsOfFile...:@"key_name"]; 3、自定义对象归档 NSKeyedArchiver 注意: 必须遵守NSCoding协议的对象才可以进行归档解档,默NSString、NSDictionary、NSArray...:toFile:方法可以将一个对象直接写入到一个文件中,但有时候可能想将多个对象写入到同一个文件中,那么就要使用NSData来进行归档对象,NSData可以为一些数据提供临时存储空间,以便随后写入文件,

2.5K70

控制器和应用数据存储

偏好设置    3)、NSKeydeArchiver归档(一般用来存储自定义对象)    4)、SQLite(关系型数据库,不能直接存储对象使用sql语句序列化对象存储)    5)、Core Data...2)、使用偏好设置存储 /* 保存数据到用户偏好设置中 */ - (IBAction)saveDataToUserPreference:(id)sender{ NSUserDefaults *ud...3)、使用NSKeyedArchiver自定义对象进行归档, 使用NSKeyedUnarchiver解析归档对象       首先自定义类需要实现NSCoding协议,然后实现方法      - (void...)encodeWithCoder:(NSCoder *)aCoder; //定义自定义类哪些属性需要归档,如何归档      - (id)initWithCoder:(NSCoder *)aDecoder...4)使用NSKeyedArchiver归档多个对象和解析 /* 使用NSKeyedArchiver归档多个对象 */ - (IBAction)saveMulObjectByArchive:(id)sender

77930

iOS本地数据存储

如果是NSString、NSNumber、NSData等基础类型可以直接存储在NSUserDefault,如果是自定义对象则需要实现NSCoding进行对象的序列化和反序列化。...FMDB FMDBSQLite数据库进行封装,开放OC的接口便于开发者接入,是很普遍使用的iOS第三方数据库。 GitHub仓库地址,也可以使用pod接入。...为了保证数据安全,keychain内的数据都是经过加密。 keychain的使用 1、打开keychain的开关。 ?...此时可以使用iOS提供的keychain敏感数据进行保存。keychain的数据是经过加密处理,具有较高的安全性。...在将对象转换成二进制数据,以及将二进制数据转换成对象时,可以使用系统提供的NSCoding协议,也可以使用第三方库YYModel。 所有代码GitHub可见,地址。

2.9K20

老司机出品——数据持久化之基于FMDB的ORM数据库设计

---- 偏好设置 其实就是我们平常使用NSUserDefaults。...他的使用方法上跟字典差不多,不过它提供了一些泛型的支持,示例代码如下: [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"male...因为不是面向对象的,所以使用起来难免有些冗长。这里我就不放示例代码了,找了一个专门写iOS 原生sqlite3的使用的博客,大家自己看下吧。...嘿嘿 FMDB FMDB是sqlite3做的一层对象思想的封装。结构良好,执行效率比原生sqlite3并不逊色。优势在于他是面向对象的。...他的优势在于: 面向对象 无需考虑slq语句的组装 无需指定模型与数据表的对应关系 无入侵性,现有工程模型无需做修改,直接使用。 遵循协议后可自定义ORM映射关系、落库属性黑白名单等。

1.1K30

iOS数据持久化之二——归档与设计可存储化的数据模型基类

一个init的归档方法,一个encode的解归档方法,NSCoder就是归档对象。...2、几种归档与解归档的应用 (1)通过类方法来rootKey进行归档         这种方式,我个人理解,很类似于NSUserDefaults中的standardUserDefaults,只是后者是系统为我们创建的一个默认...,是单一的数据对象进行的归档,当然,这里的对象是支持数组、字典等集合的,但集合其中的对象,也必须全部支持归档操作。...(2)通过构造新的archiver对象多个对象进行归档         除了上面的类方法,我们还可以自己构造一个归档对象,来多种不同的对象进行归档:     NSString *homeDictionary...(3)进行自定义对象的归档         上面介绍中有提到,原则上,任何遵守了NSCoding协议的类都可以进行归档操作,那么对于我们自定义对象,我们该如何来做呢?

1.1K30

iOS存储自定义类型到NSUserDefaults数据库

1.1 沙盒的根目录下有三个常用的文件夹: 1.2 Library文件夹 1.3 tmp文件夹 1.4 standardUserDefaults 的使用 2.1 把字典对象 持久化保存到文件中 2.2...存储自定义类型对象NSUserDefaults 3.1 基本用法 3.2 例子:创建一个处理数据库的工具类 3.3 数据库缓存性能进行优化 3.4 测试验证 前言 一般通过以下两种方式使用磁盘缓存:...:(NSString *)key{ return [[NSUserDefaults standardUserDefaults] objectForKey:key]; } 例子: 是否展示过版本新特性...,实现起来相对比较简单, 可以使用NSKeyedArchiver类将字典对象进行归档写入文件,也可以使用NSJSONSerialization类把字典对象转换成JSON格式字符串写入文件。...文件缓存是不够灵活的,我们很难使用更细的粒度去操作数据,比如,很难其中的某一条数据进行读和写操。 2.1 把字典对象 持久化保存到文件中 把字典对象 持久化保存到文件中

96610

iOS常用的数据存储方式

1.1 目录结构分析 1.2 应用沙盒目录的获取方式 1.3 偏好设置(standardUserDefaults 的使用) 1.4 存储自定义类型对象NSUserDefaults 2.1 什么是Keychain...归档NSArray 5.1 FMDB例子 5.2 例子2:利用NSData归档2个Person对象到同一文件中 5.3 例子3:利用NSData实现深copy 6.1 基本用法 6.2 数据库缓存性能进行优化...类存取该目录下的设置信息 1.3 偏好设置(standardUserDefaults 的使用) 针对应用的字体大小、是否保存用户名等偏好设置,IOS的每个应用都有个NSUserDefaults实例,通过它来存取偏好设置...出现以上问题,可以通过调用synchornize方法强制写入 - (BOOL)synchronize; 偏好设置的好处 1、不用关心文件名 2、快速的进行键值存储 偏好设置的工具方法 ---- +...] objectForKey: @"bShowIntroduce"]; return [numShowIntroduce boolValue]; } 1.4 存储自定义类型对象NSUserDefaults

1.9K20

程序员面试闪充--iOS密码学

当用户进行注册、登录操作时,我们可以直接密码进行MD5操作,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统"不知道"用户的密码是什么。...加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5 先加密,后乱序:先明文进行MD5,然后加密得到的MD5串的字符进行乱序。...三、HMAC加密加密方法需要先生成密钥,然后再密码进行MD5和HMAC加密,数据库中需要存放当时使用的密钥和密码加密后的密文 在用户登陆时 再次填入的密码用密钥进行加密 并且还要加上当前时间(...,判断当前设备是否支持指纹识别功能(是否带有TouchID) // 1> 实例化指纹识别对象 LAContext *laCtx = [[LAContext alloc] init];...1.本地数据加密 iOS应用防反编译加密技术之一:NSUserDefaults,sqlite存储文件数据加密,保护帐号和关键信息 2.URL编码加密 iOS应用防反编译加密技术之二:程序中出现的

1.5K110

点进来你就懂的iOS数据存储

NSInteger这种根据系统是64位还是32位来判断自己是int类型或者long类型,并且它也不是一个标准的OC对象,是不可以用NSUserDefaults来存储的。...3、归档 如果说NSUserDefault只能存储常用的数据类型,归档则可以存储常用数据类型外的自定义对象,并且安全性会高于上面两种方式,数据归档是进行加密(协议方法中的encode)处理的。...通过让存储的数据模型遵守NSCoding或NSSecureCoding(iOS 6以后)协议并且实现其两个协议方法使用NSKeyedArchiver自定义的数据对象进行序列化。...Plist文件中的二进制格式文件数据则可以使用Plist文件编辑器(如plutil)进行查看或修改,即使在一个没有越狱的设备上,plist文件也可以通过工具iExplorer获取。...对于以编码、未加密或弱加密形式存储的敏感信息就可能会导致敏感信息泄露了。如果要存储一些相对较为敏感的数据可以采用Keychain方式存储。

2K10

微信团队分享:iOS版微信的高性能通用key-value组件技术实践

考虑到主要使用场景是频繁地进行写入更新,我们需要有增量更新的能力: 1)将增量 kv 对象序列化后,直接 append 到内存末尾; 2)这样同一个 key 会有新旧若干份数据,最新的数据在最后;...3.5 数据有效性 考虑到文件系统、操作系统都有一定的不稳定性,我们另外增加了 crc 校验,无效数据进行甄别。在 iOS 微信现网环境上,我们观察到有平均约 70w 日次的数据校验不通过。...可见 MMKV 性能远远优于 iOS 自带的 NSUserDefaults。...,即将开源》  《如约而至:微信自用的移动端IM网络层跨平台组件库Mars正式开源》  《开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石 [源码下载]》  《微信新一代通信安全解决方案...:基于TLS1.3的MMTLS详解》  《微信团队原创分享:Android版微信后台活实战分享(进程活篇)》  《微信团队原创分享:Android版微信后台活实战分享(网络活篇)》  《Android

1.7K31

iOS学习——页面的传值方式iOS----KVC和KVO 详解

适用场景:任何需要数据传递的场景都适用,但是传递数据的类型仅限于基本数据类型,不能用于自定义对象类型。 传递方式:正向传值、反向传值。...使用步骤: 需要传值时将数据通过NSUserDefaults存到沙盒目录里面 - (void) btnClicked:(UIButton *)btn { /* setObject...:YES]; } 需要使用值时通过NSUserDefaults从沙盒目录里面取值进行处理 _label.text = [[NSUserDefaults standardUserDefaults] valueForKey...:@"NSUserDefaults"]; 2.6 单例传值 方法描述:单例传值的性质和NSUserDefaults传值的性质类似,只是单例传值是将数据保存在单例对象中,需要的时候同样从单例对象中去获取数据使用就...@end 需要传递数据时使用单例类将数据保存到单例的属性中 [KLDanliObj shardDanLiObj].content = @"主界面传递的数据"; 需要使用值时通过单例的属性获取数据进行使用和处理

1.7K20

iOS-Swift 完整登录方案(touchID&faceID& keychain)一iOS-Swift 完整登录方案(touchID&faceID& keychain)一

需要实现的需求如下: 首次登录使用密码或第三方登录 登录完成后开启生物验证 开启生物验证的用户可免密登录 可使用多设备登录 用户token密文传输(RSA加密) 可在无网络的情况下个人信息的展示 需求整理完之后我想说产品你...(注:有些极少数用户会选择越狱,你保存的信息就会成明文信息), 使用有一点需要注意,所缓存的对象一定要遵守NSCoding协议,且该协议无法在extension中使用.如果大量使用归档建议使用runtime...} RSA加密 由于涉及到了密码登录,按要求密码不能明文传输。最终选择使用RSA来进行加解密。现在很多APP都是手机验证码登录应该就不涉及到加密问题,就可以跳过了,按需索取吧。...本人试过很多版本,也尝试着去了解RSA这个非对称加密,在iOS系统中用Security库来实现加密算法。 其实只要了解该加密算法是使用秘钥,公钥是用来加密的,私钥是用来解密的就好了。...只要使用pod来引入就可以了,该库也是使用swift编写的。 pod 'SwiftyRSA' 依旧是核心代码,没什么好解释的. 需要注意秘钥字符串必须使用base64编码

2.1K20
领券