Base64编码加密的介绍与使用

 目前网络服务器有种流行的Restful设计风格,如下图所示:


在终端使用base64编码解码文件的方法和结果如下:


结果如下:


事实上Base64也常用于给用户的密码编码和解码。

新建工程 进行掌握  步骤如下:






代码如下:

//
//  ViewController.m
//  POST登录
//
//  Created by apple on 15/10/28.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//
/**
 安全隐患:
 尽管在发送数据的过程中,密码进行了二进制转换。但实际上,密码还是明文。
 解决方法:
 base64编码,是网络上使用最广泛的一种编码格式
 作用:可以将二进制数据转为字符串。
 有的时候网络请求上,会希望只传递字符串。
 1. url中的参数,会直接带上图片的传输。
 2. 银联的网银接口,把整个消费凭据生成一个数据的格式进行base64的编码,编码完再传递给服务器。
 
 base64的特点:
 编码之后的结果,只有64个字符 a~z A~Z 0~9 / +  再加上一个辅助字符 =
 
 base64加密之后的好处
 1、 在网络传输的过程中没有传输密码明文
 2、在本地也不能存储密码的明文
 
 */
#import "ViewController.h"
#define KLoginUserNameKey @"KLoginUserNameKey"
#define KLoginUserPwdKey @"KLoginUserPwdKey"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *nameText;
@property (weak, nonatomic) IBOutlet UITextField *pwdText;

@end

@implementation ViewController

-(void)viewDidLoad
{
    // 取出用户偏好设置保存的用户信息
    self.nameText.text = [[NSUserDefaults standardUserDefaults] stringForKey:KLoginUserNameKey];
    self.pwdText.text = [[NSUserDefaults standardUserDefaults] stringForKey:KLoginUserPwdKey];
    self.pwdText.text = [self base64decode:self.pwdText.text];
    
    NSLog(@"%@", NSHomeDirectory());
}

- (IBAction)Click
{
    
    NSString *username = self.nameText.text;
    
    // base64 加密
    NSString *pass = self.pwdText.text;
    pass = [self base64encode:pass];
    NSLog(@"%@", pass);
    
    // 1. url
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php"];
    
    // 2. POST必须是可变的请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:2.0f];
    request.HTTPMethod = @"POST";
    
    // POST 请求不需要进行百分号转义
    NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@",username, pass];
    request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
    
    // 3. 连接
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        
        // 反序列化
        NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        NSLog(@"%@", result);
        
        if ([result [@"userId"] intValue] >0) {
            // 登录成功,记录用户的信息到偏好设置
            [[NSUserDefaults standardUserDefaults] setObject:username forKey:KLoginUserNameKey];
            [[NSUserDefaults standardUserDefaults] setObject:pass forKey:KLoginUserPwdKey];
            
            // 为了即时保存,需要同步
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
        
    }];
    
}

// base64 加密(苹果已经封装好了 IOS7之后)
// base64 加密的实质是 将二进制数据转为加密后的字符串
//  将密码进行base64加密的方法
-(NSString *)base64encode:(NSString *)str
{
    // 1、把字符串转成二进制数据
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    // 2、将二进制进行base64加密(编码)
    //  提示:IOS7 以后才提供的方法,也就意味着公司里比较老的项目,有可能有base64第三方的框架
    return [data base64EncodedStringWithOptions:0];
}


// base64解码
-(NSString *)base64decode:(NSString *)str
{
    // 1、先把base64编码后的字符串转成二进制数据
    NSData *data = [[NSData alloc] initWithBase64EncodedString:str options:0];
    
    // 2、 再把data转化成字符串
    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
@end
为了保证用户数据的安全性,服务器端的密码也是加密后的,所以为了模拟  将本地服务器的login.php的密码验证也改为Base64编码后的密码字符串  如下所示:


由于Itool等工具可以直接获取用户的本地数据,所以  在用户的偏好设置以及本地数据文件中也不能直接保存用户的密码。经Base64加密后,进行运行  打开用户的偏好设置的PList文件如下


后台运行输出如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值