A system for equality testing, the system comprising: a first client device including a first private data unit; a second client device including a second private data unit; and a server configured to: receive a first obfuscated vector data unit, corresponding to the first private data unit from the first client device; receive a second obfuscated vector data unit corresponding to the second private data unit from the second client device, wherein each obfuscated vector data unit corresponding to each private data unit represents an obfuscation of a private vector unit corresponding to the private data unit based on a rotation mapping function and a random rotation angle; perform a calculation based on the first and second obfuscated vector data units to compute a dot product of the first and second obfuscated vector data units; and send said dot product to the first client device, wherein the first client device is configured to determine whether the first private data unit is equal to the second private data unit based on comparing said dot product to a dot product of the obfuscated vector data unit and a pseudo random vector, the pseudo random vector generated by each of first and second client devices. a first client device including a first private data unit; a second client device including a second private data unit; and a server configured to: receive a first obfuscated vector data unit, corresponding to the first private data unit from the first client device; receive a second obfuscated vector data unit corresponding to the second private data unit from the second client device, wherein each obfuscated vector data unit corresponding to each private data unit represents an obfuscation of a private vector unit corresponding to the private data unit based on a rotation mapping function and a random rotation angle; perform a calculation based on the first and second obfuscated vector data units to compute a dot product of the first and second obfuscated vector data units; and send said dot product to the first client device, wherein the first client device is configured to determine whether the first private data unit is equal to the second private data unit based on comparing said dot product to a dot product of the obfuscated vector data unit and a pseudo random vector, the pseudo random vector generated by each of first and second client devices. receive a first obfuscated vector data unit, corresponding to the first private data unit from the first client device; receive a second obfuscated vector data unit corresponding to the second private data unit from the second client device, wherein each obfuscated vector data unit corresponding to each private data unit represents an obfuscation of a private vector unit corresponding to the private data unit based on a rotation mapping function and a random rotation angle; perform a calculation based on the first and second obfuscated vector data units to compute a dot product of the first and second obfuscated vector data units; and send said dot product to the first client device, wherein the first client device is configured to determine whether the first private data unit is equal to the second private data unit based on comparing said dot product to a dot product of the obfuscated vector data unit and a pseudo random vector, the pseudo random vector generated by each of first and second client devices.