Skip to content

Instantly share code, notes, and snippets.

@Detry322
Created April 25, 2016 19:39
Show Gist options
  • Save Detry322/8b242243c36ade8b48699580e3c06c48 to your computer and use it in GitHub Desktop.
Save Detry322/8b242243c36ade8b48699580e3c06c48 to your computer and use it in GitHub Desktop.
pip install git+git://github.com/mikeivanov/paillier@master
(when i generate random r and k that are small)
MATCH!
MATCH!
Server sees:
Public: 0x9860c2c7d348f42051c8af8df30d5cd89b70046e67549cf4628d7344548abd3dL
A Decision: 0x39e37801171d987f9e15ec9677cd22a8945530bf7537fc2715d7455b30840de9260a340d4feba8e43978b9a3f756d12e775ce61771cbd791d32cb80cf2e47e28L
B Decision: 0x424f176cc319720068ac870001115a19ac9b3e4bd820b101fef60927c3685a7698c6fe38750856d9d8cec245a6e4e3e0e8d9d008137115678b57db4b7be11939L
R: 0x3d558cbd53b4
K: 0x18a42f88d970e
Final decision: 0x3335f0b8b14970f34ab8d96cd8e712263e38abc4daf2e2d0bbc7741a879fd87691c47ac4f82806f64d13bd9c0c5d04f94a09eee589357555e6b8741e97f1b2d5L
DECRYPTED: 0x604159ae9160eb0L
BOTH MATCHED!!!!
======
NO MATCH!
NO MATCH!
Server sees:
Public: 0x74bda22835576b3354aa05463cd9e1abd69b2186573f5537cb3c1f67f448c627L
A Decision: 0x29ce2c4c6f6b8899563bd59d4f76db380130616e81aa6439bc35e314f18bb875f7ceec0e874383faf2a7bc9c76e5e699e74bb08a00d3ce0e14b9d1f3dcb4c615L
B Decision: 0x88ebb2a2d94a7e16395d828e92f2375a201fe42797e8205dac50adba650cbac33d914546cf4a1e04360f0f71a4ff988c52d15cfd676f905eeb463997f549020L
R: 0x102510826c7e
K: 0x6444dc23600c
Final decision: 0xcf45802a028daf70fdc8251bbbcec93626af011a47a889cd04b1ab6d68a2a29e89437054007e761c9df9bc63f8b60ab4fd05a35b6df41e7941070463387aafeL
DECRYPTED: 0x5871164aef9b3a677ea6558ebc18db7c5c21eed3b01eab5891cb271352f2c08eL
Not both matched...
=======
MATCH!
NO MATCH!
Server sees:
Public: 0xad61a2065f4767e334fc263aa0bbca581422790a7f4ee04e53999b70e41e78dbL
A Decision: 0x15ec2e3c035a9f14649fcf32257d954b1b2d8c91f1532bcdff6ca2068f96cf5ce5729ef54a27e221e958ac340a60e9f9ff5a994ffd6fde44dc0e6d4e7491c45fL
B Decision: 0xa0ae2d908b1e73b785c5ae49228bc217207ae8eee698836e5f1471c3027827149113b44153ed40cac85115eb23443dd8f839c4c6050398103cb2b1a00ece75fL
R: 0x17fc4e8f92a5
K: 0x30754952bd65a
Final decision: 0x5807a3a30bbb170a517fdbd0a24fb013bafce287931756fa5a109e8860559264f5c71d4c303ed6a42c01e99058bc0667b260c5fe79b34775ec6a4b8b3bcd2509L
DECRYPTED: 0xa0a1da5d2a4ba785ce8f4511e33c7caa0ca09accc0df7837be7982399be3159eL
Not both matched...
from paillier.paillier import *
import random
C = 1000
def randomint(m):
return random.randint(1, m)
def decide(public):
if randomint(2) == 1:
print "NO MATCH!"
return encrypt(public, randomint(public.n_sq))
else:
print "MATCH!"
return encrypt(public, C)
def server(public, a_decision, b_decision):
r = randomint(100000000000000)
k = r + randomint(1000000000000000)
print "Server sees:"
print "Public: " + hex(public.n)
print "A Decision: " + hex(a_decision)
print "B Decision: " + hex(b_decision)
print "R: " + hex(r)
print "K: " + hex(k)
part_1 = e_mul_const(public, a_decision, r)
part_2 = e_mul_const(public, b_decision, k - r)
final = e_add(public, part_1, part_2)
print "Final decision: " + hex(final)
return final
def main():
private, public = generate_keypair(256)
a_decision = decide(public)
b_decision = decide(public)
result = server(public, a_decision, b_decision)
decrypted = decrypt(private, public, result)
print "DECRYPTED: " + hex(decrypted)
if decrypted % C == 0:
print "BOTH MATCHED!!!!"
else:
print "Not both matched..."
if __name__ == "__main__":
main()
MATCH!
MATCH!
Server sees:
Public: 0x690d55d731422d231bcc46f41abfd710f04e03dec2da31cee4d680a2253d3fbbL
A Decision: 0x1768907506cda4ba9217d5da7ce6b8827d0a10619b54ae45eedb30d760cf175aa010af60d0d82e80acec1883244ac3a9c2c4d6300a1e21adc4f8705c9d4ecf70L
B Decision: 0x22389d9defdd80ad2be9ad93d0316d0d413a66bd84dab7b6d8b480a190c409412b5c0a6f653f1f8cf2de7f8e0123214460a150eb966b9a92be29f681c359543fL
R: 0x212f5f0cf73228ac5b70e622082942e6ea11854cde813d92690dd7d848f6e8a283f344c8ff5888db0f6952c4a91b85cffb48a2fea4c5359fd6290a8a07a9351dL
K: 0x48cda0a5122f7313eb317e8747118c33f1c182e7b848c653755cb1d8584ef86237780dc5714370b0b8552fd0cb6b236665839ebb91f64e68192c180dea61188eL
Final decision: 0xbc35983c49f6e59735cdb61bc914d23d3d4ad4006e845f1a4c0d14d7ea40f3cefd111d0fea8a4c116d77b7af5504f2857528e3d13deb590d72f6cedd69e8a5cL
DECRYPTED: 0x4f8cf97469f928a32d35ea340e78b6033e6da9a13bc26a0f8eec6baae67c75d8L
Not both matched...
=====
MATCH!
NO MATCH!
Server sees:
Public: 0x57bb19dbb51da163b2d0950662aec929e234dee09cf759dfbdb8d5f5ce1db9ddL
A Decision: 0x1b18f21371dcf4d3a0be2043e3956465f6ce15ae1b721fcf08307f8954e63adbc8373cde8af6a529cdacc9883c4e886022677d739c6b7bfaed2d40ddb14dc62L
B Decision: 0x1b2e27b09591601dfc595aee78c066fca5777e2c9d12bc335cadfcefdd95aa64dc0ebd8b45aeb06bd241dd5237db6d6c5ad5044f7d2cbc15c235b253a97c4507L
R: 0x15b7f5f6cd22bc2a625599f1364178427a9ac2ea80d47a83406d2314bd012a985e5bad1b62931085506bdf1619501f7b32a840e231d832e7f0c0042fee9d22dcL
K: 0x28ecb3e9527b1d67109cccd62c9a591027820140bba4d1cb12f82ac6c89b0f5a15b00a6694ecf80b2c8fdacb4f21e93ab84f1f38adff7f5aabd6ea40d0bd4376L
Final decision: 0x19cdb60930c89d37e17e7a3bace7786d33c6662094a51bc869aacdb8687875acaa39541d37d03d11cf3fd0d5fa019a89496abf299b4184f03d65cdf674bbab6eL
DECRYPTED: 0x507654a3cd8a8798962eb3a96238a058bdef3287d99bcf1f89be52b0326f8f89L
Not both matched...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment