def random_bits(X): Y = list(X) for i in range(len(X)): tmp_bin = Binary() tmp_bin.gen_random(word_size=len(X[i])) Y[i] = tmp_bin return tuple(Y)
def test_gen_random(): Bin = Binary() assert Bin.bits == '0' Bin.gen_random(32) assert type(Bin.bits) is str assert len(Bin.bits) == 32 zeros = 0 ones = 0 for bit in Bin.bits: if bit == '0': zeros += 1 else: ones += 1 assert 4 < zeros < 28 assert 4 < ones < 28
def random_flips(function=QR, word_size:int=12): X = Binary()#'0000000000000000') X.gen_random(word_size) X = X.split_string() Y = function(X) HD_lists = [] for i in range(100): Xs = generate_random_flipped_space(X, runs=100) #Ys = QR_on_list(Xs) Ys = [] for X_i in Xs: Ys.append(function(X_i)) Y_base = [Y] * len(Ys) HDs = HDs_of_lists(Y_base, Ys) HD_lists.append(HDs) return HD_lists
def incremental_space(function=QR, word_size:int = 12): X = Binary()#'0000000000000000') X.gen_random(word_size) X = X.split_string() Y = function(X) Xs = generate_incr_space(word_size) #Ys = QR_on_list(Xs) Ys = [] for X in Xs: Ys.append(function(X)) Y_base = [Y] * len(Ys) HDs = HDs_of_lists(Y_base, Ys) multi_line_chart( lines=[HDs], title='HDs of incremental outputs', x_label='bits', y_label='Hamming distance and weight' )
from tools.binary import Binary from salsa.QR_function import QR a = Binary() b = Binary() c = Binary() d = Binary() a.gen_random(32) b.gen_random(32) c.gen_random(32) d.gen_random(32) X = (a, b, c, d) Ys = [] for i in range(100): # Generate a new part. c for interesting findings. c.gen_random(32) X = (a, b, c, d) Y = QR(X) Ys.append(Y) partials = [] for i in range(len(Ys)): a, b, c, d = Ys[i] # Add relevant partial. b for interesting findings. partials.append(b)