Starting with a one time pad say you want to encrypt some small strings like the words in this sentence but you want to reuse the same OTP key for each string so that when you encounter the same word the ciphered text comes out the same.

But say you modify the OTP algorithm in some way, say by jumping around on an extremely long key according to some special calculation that places you on different positions along the key (for the same word you end up at the same position each time) So different words end up at different positions.

Would making the key very long and alternating positions along its entire length make any difference in decrypting the resulting message?

  • As a general rule with all encryption technologies, if you build it yourself its fundamentally broken There are certain people that are the exception to this rule, but if you have to ask then you are not one of them. And on that note, when something like that is being built the algorithm is going to take more than 6 months (full time) to write. – Damian Nikodem Feb 28 '15 at 3:16

As others have said, this is not a One-Time Pad algorithm. Your proposed algorithm is actually called a "code book"; the primary difference being that you are substituting one word for a random set of letters of the same length.

Code books have a long, well-documented history, and are still in limited use today. If you look at some of the books on cryptography, you'll see how they've fared with respect to their security.

| improve this answer | |
  • Thank you for pointing out the correct name of the algorithm. – erotavlas Feb 28 '15 at 16:25

It's not a "one time pad" if you reuse the key.

You lose the perfect security properties of a one time pad with any key reuse, period. Your scheme just reduces the security level of the algorithm to your "special calculation", which is simply security by obscurity.

| improve this answer | |
  • Is it possible to create an algorithm that no one can ever know? Not even the developer? Like it gets created at runtime. Say by imbedding some instruction in the key itself. Of course that requires it's own algorithm to decode. – erotavlas Feb 28 '15 at 2:54
  • 3
    @erotavlas Generally no. – user10211 Feb 28 '15 at 4:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.