美文网首页Swift 开发程序员IOS
用Swift 进行AES 加密、解密

用Swift 进行AES 加密、解密

作者: 嗯_挺好的 | 来源:发表于2017-08-30 17:08 被阅读858次

    最近在公司在用Swift 翻 oc 的项目,由于原来的加密方式都是用OC写的,现在要Swift

    发篇文章,大家以后进行加密的时候,希望可以方便一些,不用再这么费劲

    1.导入第三方库CryptoSwift
    import CryptoSwift
    CryptoSwift源码地址

    算了,话不多说,直接上代码
        public static func Endcode_AES_ECB(strToEncode:String)->String {
            // 从String 转成data
            let data = strToEncode.data(using: String.Encoding.utf8)
            
            // byte 数组
            var encrypted: [UInt8] = []
            do {
                encrypted = try AES(key: key, iv: iv, blockMode: .CBC, padding: PKCS7()).encrypt(data!.bytes)
            } catch {
            }
            
            let encoded =  Data(encrypted)
            //加密结果要用Base64转码
            return encoded.base64EncodedString()
        }
        
        //  MARK:  AES-ECB128解密
        public static func Decode_AES_ECB(strToDecode:String)->String {
            //decode base64
            let data = NSData(base64Encoded: strToDecode, options: NSData.Base64DecodingOptions.init(rawValue: 0))
            
            // byte 数组
            var encrypted: [UInt8] = []
            let count = data?.length
            
            // 把data 转成byte数组
            for i in 0..<count! {
                var temp:UInt8 = 0
                data?.getBytes(&temp, range: NSRange(location: i,length:1 ))
                encrypted.append(temp)
            }
            
            // decode AES
            var decrypted: [UInt8] = []
            do {
                decrypted = try AES(key: key, iv: iv, blockMode:.CBC, padding: PKCS7()).decrypt(encrypted)
            } catch {
            }
            
            // byte 转换成NSData
            let encoded = Data(decrypted)
            var str = ""
            //解密结果从data转成string
            str = String(bytes: encoded.bytes, encoding: .utf8)!
            return str
        }
    

    DEMO地址
    后续还会更新其他加密方式 ,以及原生加密等等,大家如果写了其他的加密,可以@我一下,一起学习

    相关文章

      网友评论

      本文标题:用Swift 进行AES 加密、解密

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