たまたま話に上がったので、Swiftでどうやるのかをメモしておく
Base64とは
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。具体的には、A–Z, a–z, 0–9 までの62文字と、記号2つ (+, /)、さらにパディング(余った部分を詰める)のための記号として = が用いられる。この変換によって、データ量は4/3(約133%)になる[1]
environment
- Xcode 10 beta 2
- Swift 4.2
- (Xcode 9.4.1でも動く)
Playgroundでやった
import Foundation
let originalString = "Hello, playground"
// Encode
let originalData = originalString.data(using: .utf8)
let encodedString = originalData?.base64EncodedString()
print(encodedString!) // SGVsbG8sIHBsYXlncm91bmQ=
// Decode
let restoreData = Data(base64Encoded: encodedString!)
let restoreString = String(data: restoreData!, encoding: .utf8)
print(restoreString!) // "Hello, playground"
print(originalString == restoreString) // true