首页 > 解决方案 > 将数组 Int8 转换为 base64?

问题描述

我正在TripleDESIDZSwiftCommonCrypto图书馆一起使用。

加密文本时,它TripleDES返回 UInt8 类型的字节数组。

如何将此数组cipherText转换为 base64,反之亦然以在服务中传输。当我尝试使用 String 类将cipherText转换为字符串时,返回nil

import UIKit
import IDZSwiftCommonCrypto
let  s = "0eXAiOiJKV1QiLCJhbGciOiJIUzI8"
var md5s2 : Digest = Digest(algorithm:.md5)
md5s2.update(s)
let digests2 = md5s2.final()
let algorithm = Cryptor.Algorithm.tripleDES
var iv = try! Random.generateBytes(byteCount: algorithm.blockSize())
var key = arrayFrom(hexString: hexString(fromArray: digests2))
var plainText = "test"
var cryptor = Cryptor(operation:.encrypt, algorithm:algorithm, options:.PKCS7Padding, key:key, iv:iv)
var cipherText = cryptor.update(plainText)?.final()

var decryptedString2 = String(bytes: cipherText!, encoding: .utf8) // Return nil

cryptor = Cryptor(operation:.decrypt, algorithm:algorithm, options:.PKCS7Padding, key:key, iv:iv)
var decryptedPlainText = cryptor.update(cipherText!)?.final()

var decryptedString = String(bytes: decryptedPlainText!, encoding: .utf8) // Return 'test'

标签: swift

解决方案


你可以这样做:

let ints : [UInt8] = [1,2,3,4]
let data = Data(ints)
let base64String = data.base64EncodedString() // As a String

我你更喜欢你可以直接在Data

let base64Data = data.base64EncodedData() // As Data

推荐阅读