我正在使用 CryptoSwift 加密我将在 URL 中传递的数据。为此,我需要将数据片段的数据类型设为 String 以连接到 NSURL 请求中。加密数据后,以字节为单位输出。如何将字节转换为无意义的字符串以传递 PHP 脚本可以解密的 URL?
我能够加密成 UInt8,但是我认为不可能通过 URL 将其传递给 PHP 脚本,因此我需要将其设为字符串。
编码:
let string = "hello"
let input: [UInt8] = Array(string.utf8)
let key: [UInt8] = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
let iv: [UInt8] = AES.randomIV(AES.blockSize)
do {
let encrypted: [UInt8] = try AES(key: key, iv: iv, blockMode: .CBC).encrypt(input, padding: PKCS7())
print("Encrypted bytes: \(encrypted)")
let str = String(bytes: encrypted, encoding: NSUTF8StringEncoding)
print("String of encrypted data: \(str)") // prints a nil value
} catch AES.Error.BlockSizeExceeded {
print("Block size exceeded")
} catch {
print("Error encrypting or decrypting data")
}
非常感谢你的帮助,