1.对称加密的话用AES最好,苹果系统,美国安全局,RSA中的对称加密都是同的AES加密
1.用户密码本地化的话,建议使用钥匙串加密。使用第三方SSkeychain,
2.一些简单又机密的数据可以AES加密
1.base64加密
base64编码是现代密码学的基础
基本原理:
1.原本的8个bit一组表示数据,改为6个bit一组表示数据,不足的部分补零,每两个0用一个=表示;
// 将数据进行加密
// 获取需要加密的二进制数据
NSData *data = [NSData dataWithContentsOfFile:@"1221211212"];
NSData *base64Data = [data base64EncodedDataWithOptions:0];
//将加密后的文件存储到桌面
[base64Data writeToFile:@"/Users/wangpengfei/Desktop/123" atomically:YES];
//解密
//获取加密后的文件
NSData *base64DATA = [NSData dataWithContentsOfFile:@"/Users/wangpengfei/Desktop/123"];
//解密加密后的二进制数据
NSData *baseData = [[NSData alloc]initWithBase64EncodedData:base64DATA options:0];
post加密
token值介绍
token:登录令牌,利用token值来判断用户的登录状态,类似于MD5加密之后的长字符串,用户登录成功之后,在服务器端会根据用户信息生成一个唯一的值,这个值就是token值。
基本使用:
1.在服务器端会保存这个token值,以后利用这个token来检索对应的用户信息,并且判断用户的登录状态;
2.用户登录成功之后,服务器会将生成的token值返回给客户端,在客户端也会保存这个token值。
3.以后客户端在发送新的网络请求的时候,会默认自动附带这个token值。服务器拿到客户端传递的token值跟保存在数据库的token值对比,以此判断用户的身份。
3.MD5加密
把一个任意长度的字节串变换成一定长度的十六进制的大整数。
注意,字符串的转换过程是不可逆的,不能通过加密结果,反向推导内容基本介绍
需要导入第三方框架:NSString+Hash
MD5特点:
1.压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2.容易计算:从源数据计算出来的MD5值很容易;
3.抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的MD5值都有很大区别;
4.弱抗碰撞:已有原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的;
5.强抗碰撞:想找到两个不同数据,使他们具有相同的MD5值是非常困难的。
MD5应用:
一致性验证:MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,就像每个人都有独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹。
利用MD5来进行文件校验,被大量应用在软件下载站,论坛数据库,系统文件安全等方面
时间戳密码
基本介绍:
动态密码:相同的密码明文+相同的加密算法->英文每次登录时间都不同,所以计算出的结果也都不相同,可以充分保证密码的安全性。
服务器会计算两个时间值,当期时间和前一分钟的时间(比如第59秒发送的网络请求一秒钟后服务器收到并作出响应,这时服务器当前时间比客户端发送时间晚一分钟,仍然能够判断准确的值)
钥匙串访问
基本介绍:
1.苹果7.0.3版本以后公布钥匙串访问的SDK.钥匙串访问接口是纯C语言的。
2.钥匙串使用AES 256加密算法,能够保证用户密码的安全;
3.钥匙串访问的第三方框架SSKeychain,是对C语言框架的封装。
4.钥匙串访问的密码保存在哪里?只有苹果才知道
指纹识别
简单介绍
1.指纹识别功能是ipone 5S之后推出的SDK是iOS8推出
需要导入框架#import <LocalAuthentication/LocalAuthentication.h>
2.用base64编码之后,数据长度会变大,增加大约1/3左右。(8-6)/6可进行反向解密