1. A method for securing data transmitted between a client device and a server comprising: obtaining input text from said client device to an intermediate module; processing said input text at the intermediate module to obtain processed text, wherein said processing comprises: deciding whether to transform the input text deterministically or non-deterministically, or a combination of deterministically and non-deterministically; and based on said decision, transforming said input text deterministically or non-deterministically, or a combination of deterministically and non-deterministically, using at least one key to obtain processed text; and transmitting the processed text to the server.