美文网首页
数据加密

数据加密

作者: Mario_ZJ | 来源:发表于2016-10-19 15:18 被阅读29次

    数据安全

    • 数据安全的原则
      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. 证书等

    相关文章

      网友评论

          本文标题:数据加密

          本文链接:https://www.haomeiwen.com/subject/uyjiettx.html