コード例 #1
0
ファイル: Form1.cs プロジェクト: pgrontas/PermNetMix
        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();
        }
コード例 #2
0
 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;
 }
コード例 #3
0
ファイル: MixServerForm.cs プロジェクト: pgrontas/PermNetMix
        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 ");
        }