详细介绍: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..
posted @ 2025-12-17 08:31  yangykaifa  阅读(40)  评论(0)    收藏  举报