コード例 #1
0
ファイル: CurlMask.cs プロジェクト: kauxam/tangle-.net
        /// <inheritdoc />
        public void Mask(int[] payload, AbstractCurl curl)
        {
            var keyChunk = curl.Rate(Constants.TritHashLength);

            var round = 0;

            foreach (var chunk in payload.GetChunks(Constants.TritHashLength))
            {
                curl.Absorb(chunk);
                var curlState = curl.Rate(Constants.TritHashLength);
                var length    = chunk.Length;

                for (var i = 0; i < length; i++)
                {
                    payload[round * Constants.TritHashLength + i] = Converter.Sum(chunk[i], keyChunk[i]);
                    keyChunk[i] = curlState[i];
                }

                round++;
            }
        }
コード例 #2
0
ファイル: CurlMask.cs プロジェクト: kauxam/tangle-.net
        /// <inheritdoc />
        public int[] Unmask(int[] payload, AbstractCurl curl)
        {
            var unmasked = new List <int>();

            foreach (var chunk in payload.GetChunks(Constants.TritHashLength))
            {
                for (var i = 0; i < chunk.Length; i++)
                {
                    chunk[i] = Converter.Sum(chunk[i], -curl.Rate(Constants.TritHashLength)[i]);
                }

                unmasked.AddRange(chunk);
                curl.Absorb(chunk);
            }

            return(unmasked.ToArray());
        }