NSUserDefaults本地存储 + MD5

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。

因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了。

NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。


用NSUserDefaults存储的数据下次程序运行的时候依然存在,它把数据存储在什么地方了?如何能够清除?

其实它存储在应用程序内置的一个plist文件里,这个可以根据路径看到。
比如说这个是你的程序沙盒位置
/UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(这个是应用程序对应在mac上的位置)
这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults
想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。

如上所说, 比如要保存一个登陆界面的数据,用户名、密码、头像之类的,使用NSUserDefaults是首选。 但是这些都是用户的敏感信息 ,不希望被其他人截取到,而从NSUserDefaults获取这些数据只需要找到对应的Key就可以轻松获取,因此,需要加一层“保险”来“打乱”原本的字符串,这里采用 MD5加密

MD5说明:

MD5是安卓和ios系统中最常用的加密方式,其特点是加密后生成32位的字符串。且加密后的数据不可逆,网络上的暴力破解网页只是将MD5加密后生成的32wei位字符串与自行生成的密码字符串进行比对,字符串相同就输出对应的密码。这种方式只能破解简单的密码。有复杂数据的密码很难进行破解。因此用户的信息安全可以得到保证。因为MD5码是不可逆的,所以用户密码忘记之后只能设置新的密码,不能取回原来的密码。为了加强MD5加密的安全性,系统提供了加盐的方法,更进一步保证了数据的安全性。

MD5特点:

对任意的数据进行计算,生成固定长度的字符串.32个字符.

一般用来加密密码.

有时候也用来验证文件下载时,是否被篡改过.

文件下载完成之后计算文件的md5值,与服务器计算的MD5值比较,如果不一样那么这个文件在下载的过程中被篡改了.

Base64与MD5的对比

Base64编码 : "加密"简单,算法可逆.毫无安全性可言.不能用来加密密码.

MD5 : 加密过程复杂,算法不可逆,安全性高,常用来加密密码等用户的敏感信息.但是简单的密码MD5加密之后可以暴力破解.

MD5  swift 实现
      class iosMD5: NSObject {

        }
         extension String{
             func md5() ->String!{
                 let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
                 let strLen = CUnsignedInt(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
                  let digestLen = Int(CC_MD5_DIGEST_LENGTH)
                  let result = UnsafeMutablePointer.alloc(digestLen)
                   CC_MD5(str!, strLen, result)
                   let hash = NSMutableString()
                   for i in 0 ..< digestLen {
                        hash.appendFormat("%02x", result[i])
                    }
                     result.destroy()
                     return String(format: hash as String)
              }
         }


MD5 OC实现



你可能感兴趣的:(移动开发技术)