import Foundation
import CryptoSwift

func decrypt(data: Data, key: String, salt: String) -> String? {
    let keyBytes = key.data(using: .utf8)?.bytes ?? []
    let saltBytes = salt.data(using: .utf8)?.bytes ?? []
    
    guard let PBKDF2key = try? PKCS5.PBKDF2(password: keyBytes, salt:  saltBytes, iterations: 4096, variant: .sha256).calculate(),
          let cipher = try? Blowfish(key: PBKDF2key, padding: .pkcs7),
          let decryptedBytes = try? cipher.decrypt(data.bytes) else {
        return nil
    }
    
    let decryptedData = Data(decryptedBytes)
    return String(data: decryptedData, encoding: .utf8)
}