【发布时间】:2020-06-29 05:44:30
【问题描述】:
我正在尝试解密从我们的服务器发送的消息。
我们的服务器和我的 Android 客户端都使用此处的加密代码:
https://gist.github.com/jafetsanchez/1080133
- 服务器使用 CS 码加密消息
- 我的android客户端使用java代码解密消息
我想用 Swift 将解密功能添加到我的 iPhone 客户端应用程序中。 但是我不知道如何使用 iOS 工具来做到这一点。
我正在使用 CryptoSwift
这是我尝试做的:
let iVector: [UInt8] = [
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
]
let encryptedMessage = "encrypted_message_encrypted_message_encrypted_message_encrypted_message_"
let password = "passwordpassword"
do {
let aes = try AES(key: password, iv: String(bytes: iVector, encoding: .utf8)!, padding: .pkcs7) // aes128
let decryptedText = try aes.decrypt(encryptedMessage.bytes)
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 { }
现在我收到错误: CryptoSwift.AES.Error.dataPaddingRequired
另外,我不确定如何在那里组合 MD5 哈希。
【问题讨论】:
-
Swift AES Encryption,Kotlin AES Encryption
-
@KasımÖzdemir 什么是盐?此外,我在那里没有看到任何 md5 参考
-
使用了Salt,因此相同的密码并不总是生成相同的密钥。添加了另一层安全性。 MD5 算法以一种方式工作。加密已完成,但无法解密。使用Brute Force攻击只有解决的可能,但是由于Brute Force攻击使用试错法,解密密码需要很长时间。
-
@KasımÖzdemir 但在我发布的示例(链接)中,他们不使用盐。他们只使用密钥(密码)和 IV。如何使其适应 swift 代码?谢谢!
标签: swift md5 cryptoswift