【问题标题】:AES128 Decryption in IOS Swift4IOS Swift4中的AES128解密
【发布时间】:2018-03-16 07:14:36
【问题描述】:

我一直在尝试使用Swift 提供的密码来解码AES 128 位加密文本。我尝试了许多库,例如AES128 和其他一些库。但在所有情况下,只能解密使用相同代码加密的文本。但是在这里我有一个需要解密的文本和密码。密码文本是 AES 128 位。谁能指定我任何库或在 Swift 中解密我的 AES 128 位 Cypher 文本的方法

提前谢谢:)

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

如你所见,我有一个已经加密的文本和一个密码,我想从他们那里得到实际的解密文本......

我添加了两个文件 WebCrypto.swift 和 WebCrypto.js,它们在 WebCrypto 库的自述文件中指定

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)!)

})

【问题讨论】:

标签: ios swift aes swift4


【解决方案1】:

您可以通过这种方式使用CryptoSwift 进行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.

更新

你可以使用这个library

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)!)
    })
})

希望对你有帮助。

【讨论】:

  • 我没有 iv ...什么是 'iv' ?我只有一个像 "E6M*@_LIMITedIBB" 这样的键
  • @Ashique 你应该接受答案,它工作正常,所以
  • 我接受此代码按原样工作(我已经尝试过).. 但请注意,我可以指定没有像“iv”这样的东西。我刚刚上传了问题中示例的屏幕截图,请查看。在那我给了密文和密码,在下面你可以看到解密的输出。我需要的一样,我不需要指定任何'iv'.. @PPL,你真的在​​帮助,但我没有找到确切的解决方案。 :(
  • @Ashique 给你解决方案,请稍候
  • 我正在努力。一旦完成,我会接受答案并让你知道...... :) 顺便说一句,非常感谢......让我试试...... .
猜你喜欢
  • 1970-01-01
  • 2011-03-12
  • 2011-12-10
  • 1970-01-01
  • 2011-11-24
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多