# Is it possible to to encrypt multiple messages with multiple keys and get only one cipher?

I want to have cipher which when people decrypt it with their own key, get different meaningful messages. Is this possible at all?

• The search term you need is "deniable encryption" - see en.wikipedia.org/wiki/Deniable_encryption for some examples. – Matthew Apr 19 '16 at 7:53
• Is the question in the title related in any way to the question in the body? – techraf Apr 19 '16 at 7:59
• @techraf: Yes, see Matthew's link. – Yuriko Apr 19 '16 at 8:12
• @Armita: It has been answered here by fgrieu. One simple example would be to use the XOR cipher, e.g. try do decipher `random` (ASCII) using the key `0x2140c08060e` (hex), and the key `0x1040d160a19` (hex). You can use xor.pw to do it online. – Yuriko Apr 19 '16 at 8:15
• @Yuriko The questions still seem different to me. Can you explain? – techraf Apr 19 '16 at 9:44

In theory yes. In practice no.

You could use one-time pad cipher like

``````a \xor k = b and c \xor k' = b
``````

But this reverses the role of the key and message. `b` becomes the key and `k`/`k'` the cipher text. In fact you could change the XOR function to any other function, it would need the same properties and therefore have the same weaknesses.

• The bits in the plaintext of `a` that are equal to `c` would result in identical bits in `k` and `k'`. So the holder of `k` would directly be able to see (part of) `k'` and vice versa. I would not even call that "broken". – Maarten Bodewes May 19 '16 at 11:13
• My point is, technically, in a one time pad, if you get the cipher text, you can create a key that gives you a chosen message (of the same size). So yes you can have two plain texts, with different key, giving the same cipher text. – M'vy May 19 '16 at 13:59
• I think we agree that although the scheme is possible that the resulting keys are related and therefore do not offer (sufficient) security? – Maarten Bodewes May 19 '16 at 14:16
• I don't think it's a security problem per se. But rather that the information is carried by the key instead of the cipher in this case. It is like we chose `b` as the key and `k` or `k'` are the cipher texts of `a` and `c`. – M'vy May 19 '16 at 14:22