I want to decrypt a encrypted "secret key" obtained from java , server side to check for secure communication between iOS and server.I have also got encrypted text and a private key to decrypt secret key from private key and then text from secret key.I am now stuck at decrypting the secret Encrypted secret Key received from JAVA : "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
func aesOperation(_ operation: CCOperation, on data: Data?, key: String?) -> Data? {
var keyPtr = [Int8](repeating: 0, count: kCCKeySizeAES128)
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}
func decrypt(_ data: Data?, withKey key: String?) -> String?
{
return String(data: aesOperation(CCOperation(kCCDecrypt), on: data, key: key)!, encoding: .utf8)
}
let base64Encoded = "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
let decodedData = Data(base64Encoded: base64Encoded)!
**getting crashed in this line **
let decodedString = String(data: decodedData, encoding: .utf8)!
let mySecretKeyDecrypt = decrypt(decodedData, withKey: b64Key)
b64Key is my private Key
I am trying to decrypt my secret key with private key. have tried several methods since 2 days .. any help will be deeply appreciated
The crash that you described it's caused because your key it's not base64 string. Because it contains space between E
and a
zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8=
.