def split(self, secret, deterministic=True): if secret >= self.P: raise ValueError("secret must be smaller than P") prng = Prng(deterministic=deterministic) prng.addEntropy(secret.to_bytes(512, byteorder="big")) a = [0] * self.k a[0] = secret for i in range(1, self.k): a[i] = prng.getRandomLong(512) % self.P x = [] for i in range(self.n): while True: r = int(prng.getRandomLong(16)) if r != 0 and r not in x: x += [r] break y = [0] * self.n for i in range(self.n): y[i] = Shamir.fPoly(x[i], a, self.P) shares = [] for i in range(self.n): shares += [(x[i], y[i])] return shares
def cipher(message, key): prng = Prng(deterministic=True, seed=key) randomString = prng.getRandomBytes(len(message)) stream = StringIO() for i in range(len(message)): stream.write(chr(ord(message[i])^ord(randomString[i]))) return stream.getvalue()
def test_deterministic_Prng_2_1(self): prng = Prng(deterministic=True) value = prng.getRandomLong(32) expected = 3563776190 self.assertEqual( value, expected, "Prng not deterministic (expected: %d, got: %d)" % (expected, value))
def test_deterministic_Prng_2_2(self): prng = Prng(deterministic=True) prng.addEntropy(b"entropy") value = prng.getRandomLong(32) expected = 1783747816 self.assertEqual( value, expected, "Prng not deterministic (expected: %d, got: %d)" % (expected, value))
def encode(self, share): prng = Prng(deterministic=self.deterministic) prng.addEntropy(share[0].to_bytes(512, byteorder="big") + share[1].to_bytes(512, byteorder="big")) result = b"" result += bytes([prng.getRandomLong(8) & 0xF0 | self.version]) result += bytes([prng.getRandomLong(8) & 0xF0 | self.k]) result += rawFromLong(share[0], 16) result += rawFromLong(share[1], self.width) return result
def __init__(self, buckets=2000, depth=7): """ 'Constructor' for ams sketch. @param buckets the buckets for sketch @param depth number of vectors. """ self.depth = depth self.buckets = buckets # following two lines are from imports (from the same package) #self.operations = AMS_Operations(self.buckets, self.depth) self.operation = AMS_Operations() self.rand_gen = Prng() self.count = 0 # create the sketch #self.sketch = [[0 for i in range(self.buckets)] \ # for j in range(self.depth)] self.sketch = [0 for i in range(self.buckets * self.depth)] self.rand_array = self.createHelpArray()
def encrypt(plaintext, password): nonce = Prng().getRandomBytes(32) key = genkey.genKeyV3(password, nonce) ciphertext = cipher(plaintext, key) return MAGIC + utils.rawFromLong(VERSION, 16) + nonce + authenticate(ciphertext, key) + ciphertext
def setUp(self): """ initial setup for testing. """ self.prng = Prng()
def genKey(label, seed=None): prng = Prng(deterministic=True, seed=seed) prng.addEntropy(label.encode("utf-8")) prng.skip(64 * 100000) return prng.getRandomBytes(32)
results prettily and runs some more''' from arduino import Arduino from stattests import FipsTests from time import time from prng import Prng from sys import argv, exit if len(argv) < 2: print "python all.py port" exit(1) port = argv[1] ard = Arduino(port="/dev/ttyUSB" + port, debug=False, dbglevel=1500) prng = Prng() allalgs = [ prng.urandom, ard.vanilla, ard.leastsigrand, ard.meanrand, ard.updownrand, ard.mixmeanupdown, ard.twoleastsignrand ] #algs = [urandomtest, ard.vanilla, ard.leastsigrand] #algs = [ard.updownrand, ard.mixmeanupdown, ard.twoleastsignrand] #algs = [ard.twoleastsignrand, ard.updownrand] algs = [ard.leastsigrand, ard.twoleastsignrand] #algs = [prng.urandom, ard.vanilla, ard.leastsigrand, ard.twoleastsignrand, ard.meanrand] k = 20000