ALPHABET) == number print convertNumberToString(convertStringToNumber(text, ALPHABET), ALPHABET) == text def calculateMOD(): lastPage = generateAllSpacePage() MOD = convertStringToNumber(lastPage, ALPHABET) return MOD #Parameters for the LCG MOD = calculateMOD() C = 982451653 #MOD and C are relatively prime A = MOD + 1 AINV = Euclid.modinv(A, MOD) def lcg(x): return ((A * x + C) % MOD) def lcgInverse(x): return ((AINV * (x - C)) % MOD) def pageAtAddress(address): addressAsNumber = convertStringToNumber(address, ADDRESSCHARSET) pageAsNumber = lcg(addressAsNumber) page = convertNumberToString(pageAsNumber, ALPHABET) page = fillWithXBefore(page, 'a', 3200)
def testConversion(number,text): #both outputs should be true print convertStringToNumber(convertNumberToString(number,ALPHABET),ALPHABET) == number print convertNumberToString(convertStringToNumber(text,ALPHABET),ALPHABET) == text def calculateMOD(): lastPage = generateAllSpacePage() MOD = convertStringToNumber(lastPage,ALPHABET) return MOD #Parameters for the LCG MOD = calculateMOD() C = 982451653 #MOD and C are relatively prime A = MOD + 1 AINV = Euclid.modinv(A,MOD) def lcg(x): return ((A * x + C) % MOD) def lcgInverse(x): return ((AINV * (x - C)) % MOD) def pageAtAddress(address): addressAsNumber = convertStringToNumber(address,ADDRESSCHARSET) pageAsNumber = lcg(addressAsNumber) page = convertNumberToString(pageAsNumber,ALPHABET) page = fillWithXBefore(page,'a',3200) return page
import Euclid import time DATANUMBER = 2646520 PARTS = 40 PARTLENGTH = DATANUMBER/PARTS #mainLCG MOD = (2 ** (DATANUMBER/PARTS)) + 1 C = (2 ** 86243) - 1 A = (2*MOD) + 1 AINV = Euclid.modinv(A,MOD) #permutationLCG m = 640 a = 21 c = 1997 ainv = Euclid.modinv(a,m) def lcg(x): return ((A * x + C) % MOD) def lcgInverse(x): return ((AINV * (x - C)) % MOD) def permLcg(x): return ((a * x + c) % m) def permLcgInverse(x):