Cocoapods 基础应用数据结构与算法

iOS加密算法的整理

2018-01-25  本文已影响936人  迷了jiang

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

对称加密

对称加密的特点
加密/解密使用相同的密钥
加密和解密的过程是可逆的
经典算法
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字符串拼到最后。

上一篇 下一篇

猜你喜欢

热点阅读