0

I want to decrypt string in base64 and when i create string from decrypted data i get nil in my string.

Here's my code:

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
    }
TroYan
  • 1
  • Your function returns nil. Use your debugger to find which part of the function returns nil and post that. – gnasher729 Jan 17 '20 at 16:00
  • The problem is that line: let string = String(bytes: decryptedData, encoding: .utf8). That String init returns nil, when i change encoding i get bad result. I use encryption first time i don't know if key that i created is wrong or encoding that i use is incorrect. – TroYan Jan 17 '20 at 16:37

0 Answers0