I have an error trying to encrypt my password. I can't find a reason why encryption is failing. What's the problem?
Crypto
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
}
}
Usage
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)
}
The place where you run is run at the place where you receive the return value through API
let chiperText = try aes.encrypt(text.bytes).toBase64()
This is where the error occurs. I don't know why because I've reported how to use Github.
I'm going to try another way I can encrypt, but I don't know how to decode.
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'
Is my usage wrong? No matter how hard I look for a solution, I can't find it.
Thanks in advance
This error occurred in a simple place. The byte value for ivData
and keyData
was not 16 bytes. If their value is not 16 bytes, an error occurs.