A method for executing software at a client device, comprising:executing a first portion of executable software using a computer processor, to extract a first key part and a key identifier from a second portion of the executable software stored in a computer memory;querying a data table using the identifier to obtain a second key part;combining the first key part and the second key part to generate a decryption key;decrypting a third portion of the executable software using the decryption key to provide an executable third portion that is distinct from the first and second portions of the executable software; andexecuting the executable third portion using the computer processor to perform a processing function.