private void insertKey(Guid eid) { var n = Int32.Parse(txtLength.Text.Trim()); var eg = new ElGamal.ElGamal(); var keys = eg.KeyGen(n); log("Secret Key="+keys.Item2.Item2.ToString()); var cmd = dbConn.CreateCommand(); cmd.CommandText = " INSERT INTO PublicKeys (ID, g, p, q, pk, Type, ElectionID) " + " VALUES (@ID, @g, @p, @q, @pk, @Type, @ElectionID) "; cmd.Parameters.AddWithValue("@ID", System.Guid.NewGuid()); cmd.Parameters.AddWithValue("@g", keys.Item1.Item1.Item1); cmd.Parameters.AddWithValue("@p", keys.Item1.Item1.Item2); cmd.Parameters.AddWithValue("@q", keys.Item1.Item1.Item3); cmd.Parameters.AddWithValue("@pk", keys.Item1.Item2); cmd.Parameters.AddWithValue("@Type", 0); cmd.Parameters.AddWithValue("@ElectionID", eid.ToString()); cmd.ExecuteNonQuery(); }
public Tuple<BigInteger, BigInteger> doEncrypt(int vote) { var eg = new ElGamal.ElGamal(); var pk = retrieveKey(); var c = eg.Encrypt(vote, pk, FSharpOption<BigInteger>.None); log("Cipher" + c.ToString()); return c; }
internal void Decrypt() { var options = retrieveElectionOptions(); var counters = new Dictionary<int,int>(); foreach (var item in options) counters.Add(item.Value, 0); var votes = retrieveVotes(); var pk = retrieveKey(); string[] lines = System.IO.File.ReadAllLines(@"SK.txt"); var k = BigInteger.Parse(lines[0]); Tuple<Tuple<BigInteger, BigInteger, BigInteger>, BigInteger> sk = Tuple.Create(pk.Item1, k); var eg = new ElGamal.ElGamal(); var sum = new BigInteger(0); foreach (var vote in votes) { var m = (int)eg.Decrypt(vote, sk); log("Decrypted vote " + vote + " to " + m); if (counters.ContainsKey(m)) counters[m]++; } foreach (var res in counters) log("Option " + res.Key + " Received " + res.Value + " Votes "); }