21. The computer-readable medium of claim 19 , wherein said creating the two or more different encrypted keywords comprises using a function J=rH 1 (W)P 0 +rQ t and N=r·P 0 , where r is a random number, H 1 is a hash function, W is the generated keyword, P 0 is a generator of a group G1, and Q t is a public key.
19. A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by a computing device, perform a method for searching encrypted records in a database, the method comprising: generating a keyword associated with a record stored in the database in an encrypted format, wherein the database is stored on a data provider computing device; creating, at a data owner computing device, two or more different encrypted keywords corresponding to the generated keyword; storing the two or more different encrypted keywords in the database and associating the two or more different encrypted keywords with the record, wherein storing the two or more different encrypted keywords comprises sending the two or more different encrypted keywords from the data owner computing device to the data provider computing device; generating, by the data owner computing device, a first one-time trapdoor, based on the generated keyword and a random parameter, that matches at least one of the two or more different encrypted keywords stored in the database and associated with the record; generating, by the data owner computing device, a second one-time trapdoor, different from the first trapdoor, based on the generated keyword and another random parameter, that also matches at least one of the two or more different encrypted keywords stored in the database and associated with the record; receiving, at the data owner computing device, a first request from a data user computing device for a trapdoor for use in searching the encrypted records for the generated keyword; sending the first one-time trapdoor from the data owner computing device to the data user computing device for use in searching the encrypted records in the database stored on the data provider computing device; receiving, at the data owner computing device, a second request from the data user computing device for a one-time trapdoor for use in searching the encrypted records for the generated keyword; and sending the second one-time trapdoor from the data owner computing device to the data user computing device for use in searching the encrypted records in the database stored on the data provider computing device.