IOS Swift4中的AES128解密

时间:2018-03-16 07:14:36

标签: ios swift aes swift4

我一直在尝试使用Swift给出的密码解码 AES 128位加密文本。我尝试了很多像AES128这样的库以及其他一些库。但是在所有内容中,只能解密使用相同代码加密的文本。但在这里我有一个我需要解密的文本和密码。密文是 AES 128位。任何人都可以指定我的任何库或方法来解密我在Swift中的AES 128位Cypher文本

提前致谢:)

在下面的代码中,我得到了一个线程; 线程1:致命错误:在解包可选值时意外发现nil

正如您所看到的,我有一个已加密的文本和密码,我想从中获取实际的解密文本...

我在WebCrypto库的自述文件中添加了两个文件WebCrypto.swift和WebCrypto.js

let crypto = WebCrypto()

let password = "Q@*Amn!"

let encrypted = "NilZ9gpu1M3KUnEyN9scllyV3aN7NSSPJXwbOy7qTOk="

let enData = encrypted.data(using: .utf8)

self.crypto.decrypt(data: enData!, password: password, callback{(decrypted: Data?, error: Error?) in

print(String(data: decrypted!, encoding: .utf8)!)

})

1 个答案:

答案 0 :(得分:0)

您可以通过array change detection page这种方式执行AES encryptiondecryption

do {
    let tmpString = "This is test string."
    let aes = try AES(key: "password12345678", iv: "drowssapdrowssap") // aes128
    let ciphertext = try aes.encrypt(Array(tmpString.utf8))

    let decryptedText = try aes.decrypt(ciphertext)
    let data = Data(bytes: decryptedText, count: decryptedText.count)

    if let string = String(data: data, encoding: .utf8) {
        print(string)
    } else {
        print("not a valid UTF-8 sequence")
    }
} catch { }

此处print(string)将为This is test string.

<强>更新

您可以使用此CryptoSwift

执行此操作
let crypto = WebCrypto()

let input = Data("This is a string".utf8)
let password = "password123"

crypto.encrypt(data: input, password: password, callback: {(encrypted: Data?, error: Error?) in
    print(encrypted!) //encrypted data

    crypto.decrypt(data: encrypted!, password: password, callback: {(decrypted: Data?, error: Error?) in
        print(String(data: decrypted!, encoding: .utf8)!)
    })
})

希望对你有所帮助。