When asked about salary I say that I consider my previous/current employer's salary information to be proprietary & confidential information and I would be violating the agreement I signed when I joined that company to keep such information private, by revealing it.
I basically present it as an ethical issue, and effectively say, "I feel I would be doing something unethical by revealing that information. You're not going to ask me to do something I consider unethical, are you?"
Of course, if they say yes, that tells me something else entirely too, and also something I'd like to know before I start working somewhere.