瞭解Base64編碼解碼

瞭解Base64編碼解碼

我們經常說Base64,那Base64到底是什麼呢?
Base64是一種基於64個可打印字符來表示二進制數據的表示方法,常用於在通常處理文本數據的場合,表示、傳輸、存儲一些二進制數據,會將不便於查看的二進制數據用Base64進行表示。所以Bsea64經常用於密碼學中,因爲密碼學通常用二進制進行加密,加密的結果用Base64編碼來表示並傳輸。

我們想了解Base64,其實看下面的Base64索引表就可以了。
Base64索引表

在Base64中的可打印字符包括字母A-Za-z數字0-9共有62個字符,加上+/共64個字符,實際上還有一個字符=來作爲後綴。比如:編碼Man
編碼Man

當Base64對一個二進制數據進行編碼時,每6個位元爲一個單元,對應某個可打印字符。3個字節有24個位元,對應於4個Base64單元,即3個字節可由4個可打印字符來表示,所以最少要24個比特位。如果不足24位,就在後面補0,後面補的0就會用=來表示,所以=也只會在最後面。

終端演示Base64編碼

// 通過Base64將111圖片進行編碼,生成111.txt文件
$ base64 111.png -o 111.txt
// 對111.txt文件解碼,生成222.png
$ base64 111.txt -o 222.png -D

Base64編碼

左側的圖片是原始文件,通過Base64編碼後輸出右側111.txt文件,再對111.txt文件解碼還原。

代碼演示Base64編碼

Base64也是在iOS7以後出現的,接下來用代碼簡單操作一下

//
//  ViewController.m
//  Base64
//
//  Created by Vincent on 2019/1/14.
//  Copyright © 2019 Vincent. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (NSString *)getBase64Encode:(NSString *)encodeStr {
    // 將傳進來的string轉成NSData,再進行Base64編碼
    NSData *data = [encodeStr dataUsingEncoding:NSUTF8StringEncoding];
    return [data base64EncodedStringWithOptions:0];
}

- (NSString *)getBase64Decode:(NSString *)decodeStr {
     // 由於傳過來的是Base64編碼字符串,則不需要先轉二進制再解碼,可以直接通過NSData初始化方法解碼
    NSData *data = [[NSData alloc] initWithBase64EncodedString:decodeStr options:0];
    // 將data轉成string
    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    NSLog(@"----編碼:%@", [self getBase64Encode:@"abc"]);
    NSLog(@"####解碼:%@", [self getBase64Decode:[self getBase64Encode:@"abc"]]);
}

@end

  • 打印結果
----編碼:YWJj
####解碼:abc
  • 終端驗證
// 通過Base64將abc進行編碼
$  echo -n abc | base64
YWJj

驗證通過!!!但是通過Base64編碼,我們會發現編碼結果會變大1/3。
該文章爲記錄本人的學習路程,希望能夠幫助大家,也歡迎大家點贊留言交流!!!https://www.jianshu.com/p/26f2ed1ed1f6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章