Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
 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))
Exemplo n.º 4
0
 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))
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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()
Exemplo n.º 7
0
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
Exemplo n.º 8
0
 def setUp(self):
     """ initial setup for testing. """
     self.prng = Prng()
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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