数据加密

数据安全

  • 数据安全的原则
    1)在网络上"不允许"传输用户隐私数据的"明文"
    2)在本地"不允许"保存用户隐私数据的"明文"
  • 请求的方法
  1. 一定要使用POST请求提交用户的隐私数据
    这个请求的方式,可以将于用户相关的信息全部放在一个请求体内,不会暴露在请求的URL中
  2. GET请求的所有参数都直接暴露在了URL中
    这个请求的方式,会将用户的私人信息暴露在请求的URL内,不利于私人信息的保密
  3. 请求的URL一般会记录在服务器的访问日志中
  4. 服务器的访问日志是黑客攻击的重点对象之一
  • 用户的隐私数据都包含哪些
    用户的隐私数据,一般都包含用户的账号/密码,银行的账号等等
  • 数据拦截的方式
    1.数据的拦截有多种多样的方式,作为编程人员,平时最常做的接口验证,需要拦截数据,查看请求到的数据是否正常,这里常用的到软件是Charles
    2.平时仅仅使用POST请求提交用户的隐私数据,还是不能完全的解决安全问题,因为可以使用软件(比如Charles),通过设置代理服务器,可以拦截并查看手机客户端的请求数据,因此,在提交用户的隐私数据时,一定不要明文(包括POST请求方式中的请求体内管用用户隐私的内容)提交,必须要加密处理后再提交
  • 信息安全所面临的威胁
  1. 机密性(面临着被窃听,秘密泄露的威胁)
  2. 完整性(面临着被篡改,信息被修改的威胁)
  3. 认证(伪装,指的是伪装成通信双方,以成功获取对象的认证)
  4. 不可否认性(否认,是指事后不承认是自己发送的)


  • 常用的加密算法
    最常用的加密算法用如下几种:
    MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \RSA \ IDEA \ DSA \ AES
  • 加密算法的选择
    一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密

常见的加密算法

  • Base64编码

    • 简单说明

      • HTTP将Base64编码用于基本的认证和摘要认证
      • 其可以方便的将用户的任何输入转换成只包含特定字符的安全格式,服务于网络通信过程
      • Base64可以成为密码学的基石,非常重要。
    • 特点:

      1. 可以将任意的二进制数据进行Base64编码
      2. 所有的数据都能被编码为,只用65个字符就能表示的文本文件。
      3. 编码后的65个字符包括 : A~Z a~z 0~9 + / =
      4. 对文件进行base64编码后文件数据的变化:编码后的数据 约等于 编码前数据的4/3,会比原始的数据大1/3(33%)左右。
      5. 能够进行逆运算
      6. 不够安全,但却被很多加密算法作为编码格式
  • 通过"终端命令行"实现Base64编码和解码

    编码:base64 123.png -o 123.txt
    解码:base64 123.txt -o test.png -D
  • Base64编码原理
    1)将所有字符转化为ASCII码;
    2)将ASCII码转化为8位二进制;
    3)将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
    4)统一在6位二进制前补两个0凑足8位;
    5)将补0后的二进制转为十进制;
    6)从Base64编码表获取十进制对应的Base64编码;
  • 处理过程
    a.转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。
    b.数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。
    c.不断进行,直到全部输入数据转换完成。
    d.如果最后剩下两个输入数据,在编码结果后加1个“=”;
    e.如果最后剩下一个输入数据,编码结果后加2个“=”;
    f.如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。
  • 编码&解码方式
    编码
    • 编码方式一 : 通过将给定的字符串转换成二进制数据后进行Base64编码,输出的编码结果是一个二进制数据
      方法 : -(NSData*)base64EncodedDataWithOptions(NSDataBase64EncodingOptions);
      返回的是NSData
-(NSString *)base64Encodeing1:(NSString *)string
{
    //将字符串转换成二进制
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //对二进制数据进行base64编码
    NSData * codeData = [data base64EncodedDataWithOptions:0];
    //将编码后的二进制数据转换成字符串后输出
    return [[NSString alloc] initWithData:codeDataencoding:NSUTF8StringEncoding];
}
  • 编码方式二 : 将给定的字符串转换成二进制后,进行Base64编码,输出的编码结果是字符串
    - (NSString *)base64EncodedStringWithOptions(NSDataBase64EncodingOptions);
    返回的是NSString
-(NSString *)base64Encodeing2:(NSString *)string
{
    //将字符串转换成二进制
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //将二进制数据通过base64编译成字符串
    return [data base64EncodedStringWithOptions:0];
}

解码

  • 解码方式一 : 通过将经过Base64编码后的字符串转换成二进制数据后,进行解码
    -(nullable instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions);
    上边的方法是NSData的方法,通过一个二进制数据,返回的实例对象是NSData对象
-(NSString *)base64Decodeing1:(NSString *)string
{
    //将字符串转换成二进制
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //将二进制数据通过base64进行解码
    NSData * deCode = [[NSData alloc] initWithBase64EncodedData:data options:0];
    //将解码 后的二进制数据转换成字符串
    return [[NSString alloc] initWithData:deCode encoding:NSUTF8StringEncoding];
}
  • 解码方式二 : 直接将经过Base64编码后的字符串进行解码
    -(nullable instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions);
    上边的方法是NSData的方法,通过一个字符串,返回一个实例对象是NSData的对象
-(NSString *)base64Decodeing2:(NSString *)string
{
    //解码字符串,并转换成二进制数据
    NSData * deCodeData = [[NSData alloc] initWithBase64EncodedString:string options:0];
    //将解码后的二进制数据,转换成字符串,并返回
    return [[NSString alloc] initWithData:deCodeData encoding:NSUTF8StringEncoding];
}

常见的其他加密算法

  • 常见的加密算法
    1. 消息摘要(单向散列函数)包括:MD5 \ SHA1 \ SHA256 \ SHA512等
    2. 消息认证 包括 : HMAC-MD5 \ HMAC-SHA1
    3. 对称加密 包括 : DES \ 3DES \ AES(高级加密标准)
    4. 非对称加密 包括 : RSA
    5. 数字签名
    6. 证书等
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.数据安全 01数据安全的原则1)在网络上"不允许"传输用户隐私数据的"明文"2.)在本地"不允许"保存用户隐私...
    陈贺阅读 2,194评论 0 2
  • 1.数据安全 01数据安全的原则1)在网络上"不允许"传输用户隐私数据的"明文"2.)在本地"不允许"保存用户隐私...
    小枫123阅读 511评论 0 1
  • 前言 iOS系统由于其封闭性其安全系数要比安卓高不少,但是依然有插件可以捕捉到iOS端敏感数据,特别是以plist...
    laitys阅读 1,939评论 0 9
  • 数据加密/数据安全: l 安全的原则 Ø 1)在网络上不允许传输用户隐私数据的明文 Ø 2)在本地不允许保存...
    成功没有捷径_LBQ阅读 386评论 0 0
  • 条纹元素经典搭配,每个姑娘的衣橱里都应该有不同类型的条纹款式。 我个人很喜欢穿条纹,室友总说我养了...
    遥远的她她阅读 288评论 0 0