Following up on this: after more testing, it turns out that the Undernet ircd allows you to set * as a channel key, even though it uses * as an indication to a client that the key is hidden. So a client needs to base the behaviour on whether a user is an op/non-op, which was not clear when the change was requested years ago.
I have changed support for this feature so that it is limited to the Undernet ircd (used by several networks). If you are not opped, mIRC will assume that any text provided with +k is not an actual key. If you are then opped, mIRC will send a MODE to retrieve the real key. If you are then deopped, mIRC sends a MODE to reset the key. This change will be in the next beta.
This behaviour will be dependent on the Undernet ircd version in numeric 004. I will be adding support for a new numeric 005 token HIDDENKEY that other ircds can use to enable this feature.