private Dictionary <uint, int> Decrypt()
        {
            uint[] decryptedVotes = new uint[_voteRecords.Length];

            VoteDecoder decoder = new VoteDecoder("db77d62fc88726f1c5a6b79b003b3bca83349e334337de84bd17344ab601db74".ParseHexEncodedValue());

            Dictionary <uint, int> counters = new Dictionary <uint, int>();

            _current = 0;
            Parallel.For(0, _voteRecords.Length, i =>
            {
                bool ok   = decoder.DecodeEndVerify(_voteRecords[i].EncryptedVote, out var decoded);
                var value = BitConverter.ToUInt32(decoded);
                lock (counters)
                {
                    if (!counters.TryGetValue(value, out var count))
                    {
                        counters.Add(value, 1);
                    }
                    else
                    {
                        counters[value] = count + 1;
                    }
                }
                Interlocked.Increment(ref _current);
            });

            return(counters);
        }
        public void DecodeTest()
        {
            VoteDecoder decoder = new VoteDecoder("db77d62fc88726f1c5a6b79b003b3bca83349e334337de84bd17344ab601db74".ParseHexEncodedValue());
            // Голос номер 778136
            //"{""message"":""7a2baaff59b5f862cff20fc059af42d9110bb5f6"",""nonce"":""6fe1a5f2052c79252a01bcb1f1019c7a92fd8e45c9504171"",""public_key"":""69e7b55df3370efd381e5a6c5c86002f3194183c3559f48705401152b6304313""}";"2212294583";"#2697378";"17:24:58";"5328b24e0deef4c8e6e48ed5ddc486058c8f77931cafebfe6a8b04a048011f3e0000e90306000a4064613835666166383466616562306539306566333161326537323532343135316662616330653266366536633439383336303133643634353239343639383864104d1a560a147a2baaff59b5f862cff20fc059af42d9110bb5f6121a0a186fe1a5f2052c79252a01bcb1f1019c7a92fd8e45c95041711a220a2069e7b55df3370efd381e5a6c5c86002f3194183c3559f48705401152b630431382f14251ad28b9ff582e1dc2b4e06020a8473b3022836a1151d957bf89f978e35dd4d37819e72d269053fa1797b80feb5dcb8798197d22626d19917571b4af09"
            EncryptedVote evote = new EncryptedVote("7a2baaff59b5f862cff20fc059af42d9110bb5f6", "6fe1a5f2052c79252a01bcb1f1019c7a92fd8e45c9504171", "69e7b55df3370efd381e5a6c5c86002f3194183c3559f48705401152b6304313");

            Assert.IsTrue(decoder.DecodeEndVerify(evote, out byte[] decoded));
            //"778136";77;"0x2bddd3d05570be9d417bd0b28d54e7adcf1f3c19b7ff74ae011ba9f31b7da7b7";"#606026";"16:56:59";"{""message"":""7a2baaff59b5f862cff20fc059af42d9110bb5f6"",""nonce"":""6fe1a5f2052c79252a01bcb1f1019c7a92fd8e45c9504171"",""public_key"":""69e7b55df3370efd381e5a6c5c86002f3194183c3559f48705401152b6304313""}"
            Assert.AreEqual(2212294583, BitConverter.ToUInt32(decoded));
        }