iOS加密2——Base64(苹果支持)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS加密2——Base64(苹果支持)相关的知识,希望对你有一定的参考价值。

参考技术A

1、由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。

Base64编码使用和urlencode比较
base64:
1、包含A-Z a-z 0-9 和加号“+”,斜杠“/” 用来作为开始的64个数字. 等号“=”用来作为后缀用途。
2、2进制的.
3、要比源数据多33%。
4、常用于邮件。

urlencode:将除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)

请求参数传输使用base64,而不是使用urlencode,为什么?
1、部分因为base64编码后参数就不可读,而url编码英文部分是不变的
2、为了兼容网络上的一些很古老的设备, 这些古董设备只能识别 base64编码的字符
3、因为 urlencode 对二进制数据的效率不高,base64 会有效降低 %xx 的出现次数。
注释
1、url请求中,只对参数进行base64编码,不是对整个url进行base64编码。
2、在url请求时,会对url整体进行urlencode编码。

NSString *str = @"hello world"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; NSData *base64Data = [data base64EncodedDataWithOptions:0];

NSString *path = @"/Users/apple/Desktop/1.png"; NSData *data = [NSData dataWithContentsOfFile:path]; NSData *base64Data = [data base64EncodedDataWithOptions:0]; [base64Data writeToFile:@"/Users/apple/Desktop/base64" atomically:YES];

NSString *base64Str = [data base64EncodedStringWithOptions:0]; NSLog(@"base64Str: %@",base64Str); NSLog(@"%@ %ld base64Data: %@ %ld",data,data.length,base64Data,base64Data.length);

NSData *endata = [[NSData alloc] initWithBase64EncodedData:base64Data options:0]; [endata writeToFile:@"/Users/apple/Desktop/123.png2" atomically:YES]; UIImage *image = [UIImage imageWithData:endata]; NSLog(@"%@",image);

和MD5一样我们采取封装的办法将base64封装进了MySecurities这个类中
MySecurities.h 文件
#import <Foundation/Foundation.h> @interface MySecurities : NSObject +(NSString *)base64EncodingWithData:(NSData *)sourceData;//base64加密 +(id)base64EncodingWithString:(NSString *)sourceString;//base64解密 @end
base64加密
@implementation MySecurities +(NSString *)base64EncodingWithData:(NSData *)sourceData if (!sourceData) //如果sourceData则返回nil,不进行加密。 return nil; NSString *resultString = [sourceData base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength]; return resultString; ***base64解密*** +(id)base64EncodingWithString:(NSString *)sourceString if (!sourceString) return nil;//如果sourceString则返回nil,不进行解密。 NSData *resultData = [[NSData alloc]initWithBase64EncodedString:sourceString options:NSDataBase64DecodingIgnoreUnknownCharacters]; return resultData; @end

iOS之 那几种加密 Base64

技术分享

 

 

ViewController.m
//
//  ViewController.m
//  Base64
//
//  Created by dllo on 16/1/12.
//  Copyright © 2016年 HaiTeng. All rights reserved.
//

#import "ViewController.h"
#import "GTMBase64.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor grayColor];
    
    [self Base64];
    
}

- (void)Base64{
    //对字符串进行加密,实质上是进行BASE64编码.
    NSString *encodStr = [GTMBase64 encodeBase64String:@"wanghaiteng504"];
    NSLog(@"%@",encodStr); /*加密完毕,打印看看,编码后的效果*/
    
    //解密
    NSString *decodeStr = [GTMBase64 decodeBase64String:encodStr];
    NSLog(@"%@",decodeStr);
    

//    
//    //字典加密
//    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"583267034",@"Username",@"wanghaiteng504",@"Userpass", nil];
//    //字典转化为Data
//    NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
//    NSData *encodeData = [GTMBase64 encodeData:data];
//    NSLog(@"%@",encodeData);
//    
//    //解密
//    NSData *decodeData = [GTMBase64 decodeData:encodeData];
//    NSDictionary *di = [NSJSONSerialization JSONObjectWithData:decodeData options:0 error:nil];
//    NSLog(@"%@",di);
    
}




@end

 

以上是关于iOS加密2——Base64(苹果支持)的主要内容,如果未能解决你的问题,请参考以下文章

Base64编码

(iOS)Base64加密和DES加密以及JAVA和iOS中DES加密统一性问题

java Base64加密解密中文乱码处理

iOS之 那几种加密 Base64

android Base64 加密

ios开发Base64编码以及加密相关学习