IOS使用CryptoSwift解密字符串

IOS使用CryptoSwift解密字符串,ios,swift,encryption,cryptoswift,Ios,Swift,Encryption,Cryptoswift,我想解密base64中的字符串,当我从解密的数据创建字符串时,字符串中的值为零 这是我的密码: private func xd(url: String?) -> URL? { guard let enryptedData = Data(base64Encoded: url ?? "") else { return nil } let password: Array<UInt8> = "TW9iaWxueUNhdGVyaW5nRGVlcGxpbmtTZWNyZXQ

我想解密base64中的字符串,当我从解密的数据创建字符串时,字符串中的值为零

这是我的密码:

private func xd(url: String?) -> URL? {
    guard let enryptedData = Data(base64Encoded: url ?? "") else { return nil }
    let password: Array<UInt8> = "TW9iaWxueUNhdGVyaW5nRGVlcGxpbmtTZWNyZXQ=".bytes
    let salt: Array<UInt8> = "ItyuwaSolSaltSalzToteSoSoutAsin".bytes
    let iv = Data(count: 16)
    Logger.debug("IV: \(iv)")
    do {
        let data = Padding.pkcs5.add(to: enryptedData.bytes, blockSize: AES.blockSize)
        let key = try PKCS5.PBKDF2(password: password,
                                   salt: salt,
                                   keyLength: 32,
                                   variant: .sha256).calculate()
        let decryptedData = try AES(key: key, blockMode: CBC(iv: iv.bytes), padding: .pkcs5)
            .decrypt(data)
        let string = String(bytes: decryptedData, encoding: .utf8)
        Logger.debug("Decrypted string: \(string ?? "")")

        return URL(string: string ?? "")
    } catch {
        Logger.info("\(error)")
        return nil
    }
private func xd(url:String?->url?{
guard let enryptedData=Data(base64Encoded:url??“”)else{return nil}
让密码:Array=“TW9iaWxueUNhdGVyaW5nRGVlcGxpbmtTZWNyZXQ=“.bytes
让salt:Array=“ItyuwaSolSaltSalzToteSoSoutAsin”。字节
设iv=数据(计数:16)
Logger.debug(“IV:\(IV)”)
做{
让data=Padding.pkcs5.add(to:enryptedData.bytes,blockSize:AES.blockSize)
让key=try PKCS5.PBKDF2(密码:password,
盐:盐,
键长:32,
变量:.sha256.calculate()
让decryptedData=try AES(key:key,blockMode:CBC(iv:iv.bytes),填充:.pkcs5)
.解密(数据)
let string=string(字节:decryptedData,编码:.utf8)
debug(“解密字符串:\(字符串??)”)
返回URL(字符串:字符串??“”)
}抓住{
Logger.info(“\(错误)”)
归零
}

您的函数返回nil。使用调试器查找函数的哪个部分返回nil,并发布该部分。问题在于行:let string=string(字节:decryptedData,编码:.utf8)。该字符串init返回nil,当我更改编码时,我会得到错误的结果。我第一次使用加密时,我不知道我创建的密钥是否错误,或者我使用的编码是否错误。