rez*_*afi 2 encode aes nsdata ios swift
如何在iOS Swift 3中将字符串转换为数据或NSData 32字节数.
我有一个这样的键:
let keyString = "hpXa6pTJOWDAClC/J6POVTjvJpMIiPAMQiTMjBrcOGw="
Run Code Online (Sandbox Code Playgroud)
并测试此代码以转换为数据:
let keyData: Data = keyString.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
let keyLength = keyData.count //44
Run Code Online (Sandbox Code Playgroud)
密钥长度为44.
我需要转换为32,因为有效的密钥字节数应该等于:16或24或32基于这种情况:
let validKeyLengths = [kCCKeySizeAES128, kCCKeySizeAES192, kCCKeySizeAES256]
Run Code Online (Sandbox Code Playgroud)
这是一个Base64编码的字符串,Data(base64Encoded:)
可以用来解码它,它只提供32个字节:
let keyString = "hpXa6pTJOWDAClC/J6POVTjvJpMIiPAMQiTMjBrcOGw="
if let keyData = Data(base64Encoded: keyString) {
print(keyData.count) // 32
print(keyData as NSData) // <8695daea 94c93960 c00a50bf 27a3ce55 38ef2693 0888f00c 4224cc8c 1adc386c>
}
Run Code Online (Sandbox Code Playgroud)
根据字符串的来源,您可能需要添加.ignoreUnknownCharacters选项以忽略未知字符(包括行结束字符),如@ l'L'l所示:
if let keyData = Data(base64Encoded: keyString, options: .ignoreUnknownCharacters) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |