Simple one-time pad generator

This commit is contained in:
Dominic Höglinger 2025-05-14 22:24:17 +02:00
commit 6ac2e79607

49
otp.py Normal file
View File

@ -0,0 +1,49 @@
import argparse
parser = argparse.ArgumentParser(
prog='OTP Generator',
description='Generates a OTP using /dev/random')
parser.add_argument('p', type=int, help="pages to generate")
parser.add_argument('c', type=int, help="colums per page")
parser.add_argument('r', type=int, help="rows per page")
parser.add_argument('i', type=int, help="book repeat")
args = parser.parse_args()
pages = args.p
cols = args.c
rows = args.r
repeat = args.i
def rcode(f):
b = f.read(4)
num = int.from_bytes(b, byteorder='little')
num = num % 99999
return num
def codepage(f, cols=10, rows=10):
page = ''
for r in range(0,rows):
for c in range(0,cols):
page += f"{rcode(f):05d} ";
page += '\n'
return page
def tear(cols, char = '-'):
return (char * ((cols * 6) - 1)) + '\n'
book = ''
with open("/dev/random", 'rb') as f:
for p in range(0, pages):
page = codepage(f, cols=cols)
if p != (pages - 1):
page += tear(cols)
book += page
for r in range(0, repeat):
print(book,end='')
print(tear(cols, '='),end='')