コード例 #1
0
ファイル: CFBMode.cs プロジェクト: 1hub/springburg
        public override int Transform(ReadOnlySpan <byte> input, Span <byte> output)
        {
            int outputCount = 0;
            int blockSize   = BlockSizeInBytes;

            while (input.Length > 0)
            {
                blockTransform.Transform(FR, FRE);
                // TODO: Vectorize
                for (int i = 0; i < blockSize; i++)
                {
                    FRE[i] ^= input[i];
                }
                if (encryption)
                {
                    FRE.AsSpan(0, blockSize).CopyTo(FR.AsSpan());
                }
                else
                {
                    input.Slice(0, blockSize).CopyTo(FR.AsSpan());
                }
                FRE.AsSpan(0, blockSize).CopyTo(output);
                input        = input.Slice(blockSize);
                output       = output.Slice(blockSize);
                outputCount += blockSize;
            }

            return(outputCount);
        }
コード例 #2
0
ファイル: ECBMode.cs プロジェクト: 1hub/springburg
        public override int Transform(ReadOnlySpan <byte> input, Span <byte> output)
        {
            int outputCount = 0;
            int blockSize   = blockTransform.BlockSizeInBytes;

            while (input.Length >= blockSize)
            {
                blockTransform.Transform(input.Slice(0, blockSize), output.Slice(0, blockSize));
                outputCount += blockSize;
                input        = input.Slice(blockSize);
                output       = output.Slice(blockSize);
            }
            return(outputCount);
        }