Swift3 需要解密swift 3中的函数,它在swift 2中工作

Swift3 需要解密swift 3中的函数,它在swift 2中工作,swift3,Swift3,这是我在swift 2中的代码 func AES128Decryption(base64ChiperText:String) -> (Bool,String) { let data = NSData(base64EncodedString: base64ChiperText, options: NSDataBase64DecodingOptions(rawValue: 0))! print("data : \(data)") let keyData: NSData

这是我在swift 2中的代码

func AES128Decryption(base64ChiperText:String) -> (Bool,String)
{
    let data = NSData(base64EncodedString: base64ChiperText, options: NSDataBase64DecodingOptions(rawValue: 0))!
    print("data : \(data)")

    let keyData: NSData! = (keyString as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData!
    print("keyData : \(keyData)")

    let keyBytes         = UnsafeMutablePointer<Void>(keyData.bytes)
    print("keyBytes : \(keyBytes)")
    //print("keyLength   = \(keyData.length), keyData   = \(keyData)")

    //let message       = "Don´t try to read this text. Top Secret Stuff"
    // let data: NSData! = (message as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData!
    let dataLength    = size_t(data.length)
    print("dataLength : \(dataLength)")
    let dataBytes     = UnsafeMutablePointer<Void>(data.bytes)
    print("dataBytes : \(dataBytes)")
    //print("dataLength  = \(dataLength), data      = \(data)")

    let cryptData    = NSMutableData(length: Int(dataLength) + kCCBlockSizeAES128)
    print("cryptData : \(cryptData)")
    let cryptPointer = UnsafeMutablePointer<Void>(cryptData!.mutableBytes)
    print("cryptPointer : \(cryptPointer)")
    let cryptLength  = size_t(cryptData!.length)
    print("cryptLength : \(cryptLength)")

    let keyLength              = size_t(kCCKeySizeAES256)
    print("keyLength : \(keyLength)")
    let operation: CCOperation = UInt32(kCCDecrypt)
    print("operation : \(operation)")
    let algoritm:  CCAlgorithm = UInt32(kCCAlgorithmAES128)
    let options:   CCOptions   = UInt32(kCCOptionPKCS7Padding + kCCOptionECBMode)

    var numBytesEncrypted :size_t = 0

    let cryptStatus = CCCrypt(operation, algoritm, options, keyBytes, keyLength, nil, dataBytes, dataLength, cryptPointer, cryptLength,
        &numBytesEncrypted)

    if UInt32(cryptStatus) == UInt32(kCCSuccess)
    {
        //let x: UInt = numBytesEncrypted
        cryptData!.length = Int(numBytesEncrypted)
        print("cryptData : \(cryptData)")
        //print("DecryptcryptLength = \(numBytesEncrypted), Decrypt = \(cryptData)")

        // Not all data is a UTF-8 string so Base64 is used
        //let base64cryptString = cryptData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
        //print("base64DecryptString = \(base64cryptString)")

        let utf8PlainText = NSString(data: cryptData!, encoding: NSUTF8StringEncoding)!

        print( "utf8PlainText: \(utf8PlainText)")

        return (true,utf8PlainText as String)
    } else {
        print("ErrorWhileDecrypt: \(cryptStatus)")

        return (false,String(cryptStatus))
    }
}

添加错误消息和示例数据可能重复。
let utf8PlainText = NSString(data: cryptData!, encoding: NSUTF8StringEncoding)!