Search code examples
javaiosswiftencryptionaes

AES secret key encrypted in JAVA decrypt in swift


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


Solution

  • 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=.