为什么文本加密在 Swift5 上的 CryptoSwift 中失败?
Why is text encryption failing in CryptoSwift on Swift5?
我在尝试加密我的密码时遇到错误。我找不到加密失败的原因。有什么问题吗?
加密货币
import CryptoSwift
struct Crypto {
let keyData : String!
let ivData : String!
init(){
keyData = "Stringdata"
ivData = "Stringdata"
}
func encryptor(_ text: String) {
do {
let aes = try AES(key: keyData, iv: ivData)
let chiperText = try aes.encrypt(text.bytes).toBase64() // get Error
Log.Debug(chiperText)
} catch {
Log.Error(error)
}
}
func decryptor(_ hexString : String) -> String {
var decryptText : String = ""
do {
let aes = try AES(key: keyData, iv: ivData)
let e64_data = Data(base64Encoded: hexString) ?? Data()
let decryptData = try aes.decrypt(e64_data.bytes)
decryptText = String(bytes: decryptData, encoding: .utf8)!
Log.Debug(decryptText)
} catch {
Log.Error(error)
}
return decryptText
}
}
用法
do {
try globalUrl.post(url: url, dict, encoding: .utf8, completionHandler: { data, response, error in
do {
...
Crypto.encryptor(self.PasswordField.text!)
...
} catch {
Log.Error(error)
}
} catch {
Log.Error(error)
}
你运行的地方是运行在你通过API
收到return值的地方
let chiperText = try aes.encrypt(text.bytes).toBase64()
这是错误发生的地方。我不知道为什么,因为我已经报告了如何使用 Github.
编辑
我打算尝试另一种加密方式,但我不知道如何解码。
func encryptor(_ text: String) {
do {
let aes = try AES(key: keyData, iv: ivData) // aes128
let ciphertext = try aes.encrypt(Array(text.utf8))
Log.Debug(ciphertext)
} catch {
Log.Error(error)
}
}
func decryptor(_ dataArray : Array<UInt8>) -> String {
var decryptText : String = ""
do {
let aes = try AES(key: keyData, iv: ivData) // aes128
let ciphertext = try aes.decrypt(dataArray)
decryptText = ciphertext // Cannot assign value of type '[UInt8]' to type 'String'
Log.Debug(decryptText)
} catch {
Log.Error(error)
}
return decryptText
}
decryptText = ciphertext // Cannot assign value of type '[UInt8]' to type 'String'
我的用法有误吗?无论我如何努力寻找解决方案,我都找不到。
提前致谢
这个错误发生在一个简单的地方。 ivData
和 keyData
的字节值不是 16 字节。如果它们的值不是 16 字节,则会发生错误。
我在尝试加密我的密码时遇到错误。我找不到加密失败的原因。有什么问题吗?
加密货币
import CryptoSwift
struct Crypto {
let keyData : String!
let ivData : String!
init(){
keyData = "Stringdata"
ivData = "Stringdata"
}
func encryptor(_ text: String) {
do {
let aes = try AES(key: keyData, iv: ivData)
let chiperText = try aes.encrypt(text.bytes).toBase64() // get Error
Log.Debug(chiperText)
} catch {
Log.Error(error)
}
}
func decryptor(_ hexString : String) -> String {
var decryptText : String = ""
do {
let aes = try AES(key: keyData, iv: ivData)
let e64_data = Data(base64Encoded: hexString) ?? Data()
let decryptData = try aes.decrypt(e64_data.bytes)
decryptText = String(bytes: decryptData, encoding: .utf8)!
Log.Debug(decryptText)
} catch {
Log.Error(error)
}
return decryptText
}
}
用法
do {
try globalUrl.post(url: url, dict, encoding: .utf8, completionHandler: { data, response, error in
do {
...
Crypto.encryptor(self.PasswordField.text!)
...
} catch {
Log.Error(error)
}
} catch {
Log.Error(error)
}
你运行的地方是运行在你通过API
收到return值的地方let chiperText = try aes.encrypt(text.bytes).toBase64()
这是错误发生的地方。我不知道为什么,因为我已经报告了如何使用 Github.
编辑
我打算尝试另一种加密方式,但我不知道如何解码。
func encryptor(_ text: String) {
do {
let aes = try AES(key: keyData, iv: ivData) // aes128
let ciphertext = try aes.encrypt(Array(text.utf8))
Log.Debug(ciphertext)
} catch {
Log.Error(error)
}
}
func decryptor(_ dataArray : Array<UInt8>) -> String {
var decryptText : String = ""
do {
let aes = try AES(key: keyData, iv: ivData) // aes128
let ciphertext = try aes.decrypt(dataArray)
decryptText = ciphertext // Cannot assign value of type '[UInt8]' to type 'String'
Log.Debug(decryptText)
} catch {
Log.Error(error)
}
return decryptText
}
decryptText = ciphertext // Cannot assign value of type '[UInt8]' to type 'String'
我的用法有误吗?无论我如何努力寻找解决方案,我都找不到。
提前致谢
这个错误发生在一个简单的地方。 ivData
和 keyData
的字节值不是 16 字节。如果它们的值不是 16 字节,则会发生错误。