iOS加密算法的整理

作者: 迷了jiang | 来源:发表于2018-01-25 22:57 被阅读936次

    加密算法分为两大类,对称加密和非对称加密。

    对称加密

    对称加密的特点
    加密/解密使用相同的密钥
    加密和解密的过程是可逆的
    经典算法
    DES 数据加密标准
    AES 高级加密标准
    提示:
    加密过程是先加密,再base64编码
    解密过程是先base64解码,再解密
    适用业务场景:1.网络请求过程中的敏感信息,请求的时候用AES加密请求数据,服务端返回的时候客户端去解密;2.如果有数据库的时候,数据库里面的数据也可以加密好给到客户端,防止被人破解.
    下面请看一段AES加密,解密代码

    + (NSString *)obourkey{
        NSString *key = [@"你的key" stringByReplacingOccurrencesOfString:@"要替换的字符串" withString:@"替换后的字符串"];
        return key;
    }
    
    //加密
    + (NSString *)encrypt:(NSString *)message password:(NSString *)password {
      NSData *encryptedData = [[message dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptedDataUsingKey:[[password dataUsingEncoding:NSUTF8StringEncoding] SHA256Hash] error:nil];
      NSString *base64EncodedString = [NSString base64StringFromData:encryptedData length:[encryptedData length]];
      return base64EncodedString;
    }
    
    //解密
    + (NSString *)decrypt:(NSString *)base64EncodedString{
      NSData *encryptedData = [NSData base64DataFromString:base64EncodedString];
      NSData *decryptedData = [encryptedData decryptedAES256DataUsingKey:[[[AESCrypt obourkey] dataUsingEncoding:NSUTF8StringEncoding] SHA256Hash] error:nil];
      return [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
    }
    

    非对称加密RSA

    非对称加密的特点
    使用 公钥 加密,使用 私钥 解密
    使用 私钥 加密,使用 公钥 解密(私钥签名,公钥验签)
    公钥是公开的,私钥保密
    加密处理安全,但是性能极差
    经典算法-->RSA
    使用场景:1.比如支付宝开放平台的支付业务,支付宝会让你生成公私钥(openssl可以直接生成),私钥放在自己的服务端(切记),公钥上传到支付宝的商户平台,拿到订单信息的时候,请求服务端通过私钥签名后的订单信息,然后调用支付宝的sdk,支付宝会拿公钥来验签,验证成功之后才会进入支付选项。2.Https网络请求的SSL层
    SSL层的简单过程如下:


    Https传输简单示意图

    其他常见

    哈希算法:md5,SHA1,SHA256;一般业务场景,云端的视频可以通过算法生成md5来判断资源文件是否一致。
    编码方案:Base64,一般我们不想让别人直接看到的信息,可以用Base64简单处理,比如某些网站的单词查询,就是讲单词的base64字符串拼到最后。

    相关文章

      网友评论

        本文标题:iOS加密算法的整理

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