详细介绍:iOS AES/CBC/CTR加解密以及AES-CMAC
感觉iOS自带的CryptoKit不好用,有个第三方库CryptoSwift还不错,好巧不巧,清理过Xcode缓存后死活下载不下来,当然也可以自己编译个Framework,但是偏偏不想用第三方库了,于是研究了一下,自带的CommonCrypto也可以达到任务需求。
代码主要包含以下算法:
AES128/CBC/NoPadding
AES128/CTR/NoPadding
AES-CMAC
import Foundation
import CommonCrypto
class AESUtil {
private init(){}
///
///AES-CMAC
///
static func CMAC(key: Data, data: Data) -> Data? {
let blockSize = 16
var subKey1 = Data(count: blockSize)
var subKey2 = Data(count: blockSize)
// Step 1: Generate subkeys
guard generateSubKeys(key: key, subKey1: &subKey1, subKey2: &subKey2) else {
return nil
}
// Step 2: Calculate the number of blocks
let blockCount = (data.count + blockSize - 1) / blockSize
// Step 3: Process each block
var lastBlock = Data(count: blockSize)
for i in 0..

浙公网安备 33010602011771号