A method for searching encrypted data comprising: a0) receiving at a client computing device a search query for a predetermined search range of keyword values; a) identifying, with the client computing device, a plurality of values (408A-408H) within the predetermined search range in a search index (132, 400) stored within a memory of the client computing device, each value in the plurality of values being present in a plaintext representation of at least one encrypted file in a plurality of encrypted files stored in a server computing device, wherein the server computing device includes more computational and storage capacity than the client computing device; a1) wherein the search index (132, 104) is a binary search tree stored in a memory of the client computing device, wherein the binary search tree stores values in sorted order with the leaf nodes (408A - 408H) in the tree corresponding to keywords that are included in at least one of the encrypted files, and wherein the local search index only stores a single copy of any keyword value that is found in the plaintext data for any of the encrypted files; b) generating (208, 212), with the client computing device, a plurality of search queries with each search query corresponding to one value that is present in both the predetermined range and the search index (132, 400) and including an encrypted keyword corresponding to the respective value in the plurality of values within the predetermined search range; c) transmitting, with the client computing device, the plurality of search queries to the server computing device through a data network; and d) receiving, with the client computing device, a plurality of responses from the server computing device through the data network, each response including the encrypted keyword corresponding to one value in the plurality of values and an identifier (f1-f6) of at least one file in the plurality of encrypted files stored on the server computing device that includes the one value. a0) receiving at a client computing device a search query for a predetermined search range of keyword values; a) identifying, with the client computing device, a plurality of values (408A-408H) within the predetermined search range in a search index (132, 400) stored within a memory of the client computing device, each value in the plurality of values being present in a plaintext representation of at least one encrypted file in a plurality of encrypted files stored in a server computing device, wherein the server computing device includes more computational and storage capacity than the client computing device; a1) wherein the search index (132, 104) is a binary search tree stored in a memory of the client computing device, wherein the binary search tree stores values in sorted order with the leaf nodes (408A - 408H) in the tree corresponding to keywords that are included in at least one of the encrypted files, and wherein the local search index only stores a single copy of any keyword value that is found in the plaintext data for any of the encrypted files; b) generating (208, 212), with the client computing device, a plurality of search queries with each search query corresponding to one value that is present in both the predetermined range and the search index (132, 400) and including an encrypted keyword corresponding to the respective value in the plurality of values within the predetermined search range; c) transmitting, with the client computing device, the plurality of search queries to the server computing device through a data network; and d) receiving, with the client computing device, a plurality of responses from the server computing device through the data network, each response including the encrypted keyword corresponding to one value in the plurality of values and an identifier (f1-f6) of at least one file in the plurality of encrypted files stored on the server computing device that includes the one value.