CryptoSwift 使用AES/GCM/NoPadding 加密结果和后端对比少了24位

项目接口需要加密,使用到了AES/GCM/NoPadding,这边使用了CryptoSwift进行加密解密,但是测试下来我这边的加密结果和后端的加密结果对比少了24位,查询资料,因为 GCM 模式默认会生成一个 16 字节(128 位)的认证标签(authentication tag),这个标签通常会附加在加密后的密文后面,用于解密时的完整性验证。

/** AES加密**/
    static func getContentStr(inputStr: String) -> String {
        var contentStr = ""
        PrintLog("===AES加密前=====\(inputStr)")
        do {
            // 密钥
            let aesKey = "---自己的aeskey--"
            let gcm = GCM(iv: AESIV, mode: .combined)
            let aes = try! AES(key: aesKey.bytes, blockMode: gcm, padding: .noPadding)
            let encodeStr = try aes.encrypt(inputStr.bytes)
            contentStr = "\(encodeStr.toBase64())"
        } catch {
            PrintLog(error)
        }
        return contentStr
    }

AESIV是自己向量,格式为UInt8 ,设置时GCM(iv: AESIV, mode: .combined) mode需要设置为combined,如果不设置combined,结果会比后端的少24位

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容