I have AES encrypted secret key that i have to decrypt in Swift.
Which giving me error when doing like this
let EncryptedSecretKey = "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
let decodedData = Data(base64Encoded: EncryptedSecretKey)! crashing in this Line
let decodedString = String(data: decodedData, encoding: .utf8)!
let mySecretKeyDecrypt = decrypt(decodedData, withKey: b64Key)
Using this method to decrypt the key
func decrypt( data: Data?, withKey key: String?) -> String? {
return String(data: aesOperation(CCOperation(kCCDecrypt), on: data, key: key)!, encoding: .utf8)
}
func aesOperation( operation: CCOperation, on data: Data?, key: String?) -> Data? {
var keyPtr = [Int8]()
bzero(&keyPtr, MemoryLayout.size(ofValue: keyPtr))
key?.getCString(&keyPtr, maxLength: MemoryLayout.size(ofValue: keyPtr), encoding: .utf8)
let dataLength = data?.count ?? 0
let bufferSize = dataLength + kCCBlockSizeAES128
var buffer = malloc(bufferSize)
var numBytesEncrypted: size_t = 0
let cryptStatus = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128), CCOptions(kCCOptionPKCS7Padding), keyPtr, kCCBlockSizeAES128, keyPtr, data?.bytes, dataLength, buffer, bufferSize, &numBytesEncrypted)
if cryptStatus == kCCSuccess {
print("Success")
return Data(bytes: &buffer, count: numBytesEncrypted)
}
free(buffer)
return nil
}
Which giving me error when doing like this
let EncryptedSecretKey = "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
let decodedData = Data(base64Encoded: EncryptedSecretKey)! crashing in this Line
let decodedString = String(data: decodedData, encoding: .utf8)!
let mySecretKeyDecrypt = decrypt(decodedData, withKey: b64Key)
Using this method to decrypt the key
func decrypt( data: Data?, withKey key: String?) -> String? {
return String(data: aesOperation(CCOperation(kCCDecrypt), on: data, key: key)!, encoding: .utf8)
}
func aesOperation( operation: CCOperation, on data: Data?, key: String?) -> Data? {
var keyPtr = [Int8]()
bzero(&keyPtr, MemoryLayout.size(ofValue: keyPtr))
key?.getCString(&keyPtr, maxLength: MemoryLayout.size(ofValue: keyPtr), encoding: .utf8)
let dataLength = data?.count ?? 0
let bufferSize = dataLength + kCCBlockSizeAES128
var buffer = malloc(bufferSize)
var numBytesEncrypted: size_t = 0
let cryptStatus = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128), CCOptions(kCCOptionPKCS7Padding), keyPtr, kCCBlockSizeAES128, keyPtr, data?.bytes, dataLength, buffer, bufferSize, &numBytesEncrypted)
if cryptStatus == kCCSuccess {
print("Success")
return Data(bytes: &buffer, count: numBytesEncrypted)
}
free(buffer)
return nil
}