网络APP 只要涉及用户隐私的数据,均不能以明文传输。
一 base64 编码
将任意的二进制数据转为编码为 65个字符的组成。
0-9 a-z A-Z + / = 一共 65 个 字符
例如:
1 mac 自带 base64命令
可以将base64 编码的文件可以转换
–》将桌面上1.png 图片经过base64编码生成一个abc.text,
base64 1.png -o abc.text
–》 同理 通过命令行将text 转换为png图片 -D 表示进行解码的意思,不加-D,图片则不能打开。
base64 abc.text -o re.png -D
#pragma mark - base64 编码方式
/**
传入一个子串,返回base64 编码
加密都是对二进制进行加密
@param string <#string description#>
*/
- (NSString *)base64Encode:(NSString *)string
{
// 1 将子串转为 二进制数据
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
// 2 返回编码的子串
return [data base64EncodedStringWithOptions:0];
}
#pragma mark - base64 解码方式
- (NSString *)base64Decode:(NSString *)string
{
// 1 将字符串转换为data
NSData *data = [[NSData alloc]initWithBase64EncodedString:string options:0];
// 2 返回解码后的字符串
return [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
}
二 MD5
关于MD5 加密,是不能反编译的,但是可以破解的。
MD5 的进一步安全一点的措施,就是进行加盐,将盐写在APP 内部,就会相对安全一点,
但是如果盐被拿到,同样会不安全的。
#import "NSString+Hash.h"
即可使用
#pragma mark - 进行加盐处理 该字符串足够长 足够复制
static NSString *salt = @"dasdasdasdhabdabsdjknadnaslmlmsdmdklamskdmkwkakdmdamd";
- (void)login{
// 1 密码账号
NSString *userID = @"yskysk";
NSString *pwd = @"123456";
// MARK: md5 加盐
// 2 进行MD5 加盐
// 盐是固定的,是写死在程序内的,一旦盐泄露,同样会造成不安全
NSString *password = [pwd stringByAppendingString:salt].md5String;
NSLog(@"加盐后的密码:%@",password);
if ([self isSuccess:userID withPwd:password]) {
// 登陆成功
NSLog(@"登陆成功");
}else{
// 登录失败
NSLog(@"登陆失败");
}
}