We are going to generate a large number of truly random letters for use as a one-time pad (sometimes also referred to as Vernam Cipher).
Get your hands on about fifty six-sided dice--they are easy to order from a gaming company--and a shakeable box with a lid, and the box is about 30 centimeters square.
Build a random table: on a piece of paper, draw or ...
Can his proof be applied to positional ciphers.
Shannon's proof requires that there be at least as many possible keys as possible plaintexts; unless your positional cipher has that property, then no, it cannot.
(I'm not sure what you're referring to as a 'position cipher' - would that be a transposition cipher?)
I have solved it.
The main reason was that I'm supposed to use LOGICAL operations instead of BITWISE operations.
The new results: https://imgur.com/a/NLa5Q8J
def logical_xor(message, key, op):
message = np.asarray(message)
key = np.asarray(key)
new_image = 
while row < len(message):
new_row = [...
Another way is to go weird, and do
where $m$ is the message that is pre-encrypted with a OTP. This is a good example of code book mode working properly, due to the OPT. No cuddly polar creatures appear, and it follows the recommended encrypt then MAC doctrine.
$nonce$ is my ...
If you want to be consistent with OTP usage, then you should use a One Time MAC. Currently it seems the easiest path for that is to simply use Poly1305, but remember that you must never reuse keys for Poly1305, just like you can't reuse keys in OTP. (In particular, don't use the key generation routine used by ChaCha20-Poly1305 to derive the Poly1305 key from ...