美文网首页
CryptoSwift 使用AES/GCM/NoPadding

CryptoSwift 使用AES/GCM/NoPadding

作者: HAKA | 来源:发表于2024-08-20 09:34 被阅读0次

项目接口需要加密,使用到了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位

相关文章

网友评论

      本文标题:CryptoSwift 使用AES/GCM/NoPadding

      本文链接:https://www.haomeiwen.com/subject/ykevkjtx.html