def test_dense_range(): """Equal ranges must yield 1-to-1 mapping""" range_start = 0 range_end = 2**15 in_range = ValueRange(range_start, range_end) out_range = ValueRange(range_start, range_end) key = b'123' cipher = OPE(key, in_range, out_range) values = [0, 10, 20, 50, 100, 1000, 2**10, 2**15] for v in values: assert cipher.encrypt(v) == v assert cipher.decrypt(v) == v with pytest.raises(Exception): OPE(key, ValueRange(0, 10), ValueRange(1, 2))
def homepage(request): data = DatabaseData.objects.order_by('number')[:10] if data: encrypted_data = DatabaseData.objects.values( 'key', 'number').order_by('number') cipher = OPE(b'mDErfp0Arn+noGTR+p0P9CmGU8+KKenk8ff+6aHxPi0=') for x in encrypted_data: x["number"] = cipher.decrypt(x["number"]) context = {'data': data, 'encrypted_data': encrypted_data} else: context = {} return render(request, 'index.html', context)
def test_ope_encrypt_decrypt(): """Encrypt and then decrypt""" values = [-1000, -100, -20, -1, 0, 1, 10, 100, 314, 1337, 1338, 10000] key = b'key' in_range = ValueRange(-1000, 2**20) out_range = ValueRange(-10000, 2**32) # Client encrypts values cipher = OPE(key, in_range, out_range) encrypted_values = [cipher.encrypt(value) for value in values] # Decryption at the peer side cipher_dec = OPE(key, in_range, out_range) for value, encrypted in zip(values, encrypted_values): decrypted = cipher_dec.decrypt(encrypted) assert value == decrypted, "Dec(Enc(P)) != P"
def test_dense_range(): """Equal ranges must yield 1-to-1 mapping""" range_start = 0 range_end = 2**15 in_range = ValueRange(range_start, range_end) out_range = ValueRange(range_start, range_end) key = b'123' cipher = OPE(key, in_range, out_range) values = [0, 10, 20, 50, 100, 1000, 2**10, 2**15] for v in values: assert cipher.encrypt(v) == v assert cipher.decrypt(v) == v with pytest.raises(Exception): OPE(key, ValueRange(0,10), ValueRange(1,2))
while True: # Wait for a connection print >>sys.stderr, 'waiting for a connection' connection, client_address = sock.accept() try: # Receive the data in small chunks and retransmit it while True: data = connection.recv(32) if data: val = int(str(data).strip()); if val < 0: break try: dec = cipher.decrypt(val) answer = str(dec) + '\n' connection.sendall(answer) except: print 'Invalid ciphertext:', val connection.sendall('-1\n') else: print >>sys.stderr, 'no more data from', client_address break finally: # Clean up the connection connection.close() break sock.close()
# Benchmarks encryption via systemcall in java. # # Usage: # # python benchmarkSystemcall.py key value # example: python benchmarkSystemcall.py Friday value # import sys from pyope.ope import OPE from pyope.ope import ValueRange # store key key = str(sys.argv[1]) inrange = ValueRange(0, 2**34 - 1) outrange = ValueRange(0, 2**50 - 1) cipher = OPE(key, inrange, outrange) val = int(sys.argv[2]) enc = cipher.encrypt(val) dec = cipher.decrypt(enc) answer = '(' + str(enc) + ',' + str(dec) + ')' print answer
# -*- coding: utf-8 -*- import sys from pyope.ope import OPE, ValueRange cipher = OPE(b'key goes here' * 2, in_range=ValueRange(-2**31, 2**31 - 1), out_range=ValueRange(-2**53, 2**53 - 1)) input = sys.argv[1] if " " in input: for i in input.split(): print cipher.decrypt(int(i)) print 0 else: print cipher.decrypt(int(input))
# Decrypts given integer value with given key. # # Usage: # # python decrypt.py key integerValue # example: python decrypt.py Friday 87072464 # import sys from pyope.ope import OPE from pyope.ope import ValueRange inrange = ValueRange(0, 2**34 - 1) outrange = ValueRange(0, 2**50 - 1) cipher = OPE(str(sys.argv[1]), inrange, outrange) print(cipher.decrypt(int(sys.argv[2])))