On a list I’m on there was a proposal to do a quick salary survey among the members. The proposed solution for handling this was

Everyone say ‘I’m in’ to get onto a list of N people participating. Then write down N numbers, positive or negative, that add up to your salary and send 1 of them to everyone else on the list. Add the N-1 numbers you receive to the number you didn’t pass out, and announce that to the list. The sum of those numbers is the total salary. If N-2 people gang up on you they can’t guess yours. As a bonus, you can always back out at the last minute before divulging your own sum without having given anything away.

Which you got to admit is a beautifully simple, and elegant solution to the problem of sharing sensitive information in a low trust environment.

The solution? A 7 line Perl CGI to just write salaries to a log, and a good faith promise not to track IP addresses.