示例#1
0
def fitxer_100_blocs_valids_fins_XX_DNI():
    """
	Un fitxer amb una cadena de 100 blocs que només sigui vàlida fins al bloc XX on XX són les dues darreres
	xifres del vostre DNI.
	"""
    XX_DNI = 81  # ara mateix NO INCLÒS EN ELS VÀLIDS
    rsa_0 = blockchain.rsa_key()
    size_message = 256
    m_0 = random.randint(2**(size_message // 2 - 1),
                         2**(size_message // 2) - 1)
    t_0 = blockchain.transaction(m_0, rsa_0)
    cadena_de_blocs = blockchain.block_chain(t_0)
    for i in range(1, XX_DNI):
        print(i)
        rsa = blockchain.rsa_key()
        m = random.randint(2**(size_message // 2 - 1),
                           2**(size_message // 2) - 1)
        t = blockchain.transaction(m, rsa)
        cadena_de_blocs.add_block(t)
    print(cadena_de_blocs.verify())
    for i in range(XX_DNI, 100):
        print(i)
        rsa = blockchain.rsa_key()
        m = random.randint(2**(size_message // 2 - 1),
                           2**(size_message // 2) - 1)
        t = blockchain.transaction(m, rsa)
        t.signature = random.randint(
            0, sys.maxsize
        )  # fem que sigui invàlida la transacció, també podríem alterar el hash etc
        # Nota: en tindríem prou amb alterar-ne un de sol (el 81) perquè els següents també fossin invàlids, es trenca la cadena
        cadena_de_blocs.add_block(t)
    print(cadena_de_blocs.verify())
    fitxer_de_sortida = '81_blocks_valids.block'
    with open(fitxer_de_sortida, 'wb') as file:
        pickle.dump(cadena_de_blocs, file)
示例#2
0
def create_wrong_blockchain_100():
    DNI = 19
    RSA = rsa_key()
    num_blocks = 100

    now = time()

    transactions = map(
        lambda i: transaction(
            int(hashlib.sha256(f"Transaction #{i}".encode()).hexdigest(), 16),
            RSA), range(100))
    blockChain = block_chain(next(transactions))

    for _ in range(1, DNI):
        blockChain.add_block(next(transactions))
        print(f'New block from transaction #{_ + 1} added!')
    print(f"Pre-verification: {blockChain.verify()}")
    for _ in range(DNI, num_blocks):
        print(f'Wrong block from transaction #{_ + 1} added!')
        blockChain.add_wrong_block(next(transactions))

    with open(f'100_blocks_{DNI}_wrong.pickle', 'wb') as f:
        pickle.dump(blockChain, f)

    print(f"Verification: {blockChain.verify()}\nTime elapsed: {time() - now}")
示例#3
0
def fitxer_100_blocs_valids():
	"""Un fitxer amb una cadena vàlida de 100 blocs"""
	rsa_0 = blockchain.rsa_key()
	m_0 = random.randint(0,sys.maxsize)
	t_0 = blockchain.transaction(m_0,rsa_0)
	cadena_de_blocs = blockchain.block_chain(t_0)
	for i in range (1,100):
		print(i)
		rsa = blockchain.rsa_key()
		m = random.randint(0,sys.maxsize)
		t = blockchain.transaction(m,rsa)
		cadena_de_blocs.add_block(t)
	print(cadena_de_blocs.verify())
	fitxer_de_sortida = '100_blocks_valids.block'
	with open(fitxer_de_sortida, 'wb') as file:
		pickle.dump(cadena_de_blocs, file)
示例#4
0
def test_TXR():
    uri = "https://en.wikipedia.org/wiki/Blockchain"
    site = requests.get(uri)
    soup = bs.BeautifulSoup(site.content, 'html.parser')
    i = 0
    words = []
    for x in soup.find_all('span'):
        if i < 100:
            words.append(x.text)
            i += 1
        else:
            print('Found 100 texts')
            break

    assert (len(words) == 100)

    messages = [
        int(hashlib.sha256(words[i].encode()).hexdigest(), 16)
        for i in range(100)
    ]

    keys = [512, 1024, 2048, 4096]

    output = "Key,Time without TXR,Time with TXR\n"

    for modulo in keys:
        RSA = rsa_key(bits_modulo=modulo)

        now = time()
        for message in messages:
            RSA.sign_slow(message)
        slow_time_signatures = time() - now

        now = time()
        for message in messages:
            RSA.sign(message)
        time_signatures = time() - now

        output += f"{modulo},{slow_time_signatures},{time_signatures}\n"

        print(
            f'key: {modulo} slow: {slow_time_signatures} fast: {time_signatures}'
        )

    with open("table.csv", "w") as f:
        f.write(output)