- 随着互联网的迅速发展,我们的隐私越来越少,随之安全也变得极其重要.
- 在生活中,我们不仅要保护我们的隐私,在虚拟世界,我们也需要保证隐私的安全.
我们移动端,服务于用户,就有责任保护用户的个人信息安全,下面粗略介绍几个开发中常用的解密或者解密方法:
base64
- Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一
- Base64编码可用于在HTTP环境下传递较长的标识信息
- Base64 也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。即所编码的数据不会被人用肉眼所直接看到。
apple提供了基础的Base64加解密算法:
@interface NSData (NSDataBase64Encoding)
- (nullable instancetype)initWithBase64EncodedString:(NSString )base64String options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);
- (NSString )base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);
- (nullable instancetype)initWithBase64EncodedData:(NSData )base64Data options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);
- (NSData )base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);
@end
MD5
就是把一个任意长度的字节串变换成一定长的十六进制数字串
MD5加密是单向的,只能加密不能解密.
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
使用方法:
1、引入头文件 #import "MD5Util"
2、加密时调用方法:
- (NSString *)md5:(NSString *)str;
DES
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法.
可加密可解密
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
使用方法:
1、引入头文件 #import "DES3Util.h"
2、加密时调用类方法
+(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key;
3、解密时调用类方法
+(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key;
AES (高级加密标准)
高级加密标准(英语:Advanced Encryption Standard,缩写:AES)
这个标准用来替代原先的DES
可加密可解密
使用方法:
1、引入头文件 #import "AES.h"
2、加密时调用方法
+ (NSString *)encrypt:(NSString *)message password:(NSString *)password;
2、解密时调用的方法
+ (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;
RSA算法
优点:
- RSA是目前最有影响力的公钥加密算法
- RSA的安全性依赖于大数分解,所以安全性很高
- 今天只有短的RSA钥匙才可能被强力方式解破,安全
缺点:
- 产生密钥很麻烦
- 速度太慢.速度一直是RSA的缺陷。一般来说只用于少量数据加密。
- RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。
使用方法:
1、引入头文件 #import "RSAUtil.h"
2、公钥加密时调用类方法:
+ (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey;
+ (NSData *)encryptData:(NSData *)data publicKey:(NSString *)pubKey;
3、私钥解密时调用类方法
+ (NSString *)decryptString:(NSString *)str privateKey:(NSString *)privKey;
+ (NSData *)decryptData:(NSData *)data privateKey:(NSString *)privKey;