예제 #1
0
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))
예제 #2
0
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)
예제 #3
0
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"
예제 #4
0
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))
예제 #5
0
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"
예제 #6
0
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()
예제 #7
0
# 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
예제 #8
0
# -*- 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))
예제 #9
0
# 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])))