コード例 #1
0
ファイル: SkeinEngine.cs プロジェクト: PHAISON88/My2C2PPKCS7
        private void Output(ulong outputSequence, byte[] outBytes, int outOff, int outputBytes)
        {
            byte[] currentBytes = new byte[8];
            ThreefishEngine.WordToBytes(outputSequence, currentBytes, 0);

            // Output is a sequence of UBI invocations all of which use and preserve the pre-output
            // state
            ulong[] outputWords = new ulong[chain.Length];
            UbiInit(PARAM_TYPE_OUTPUT);
            this.ubi.Update(currentBytes, 0, currentBytes.Length, outputWords);
            ubi.DoFinal(outputWords);

            int wordsRequired = ((outputBytes + 8 - 1) / 8);

            for (int i = 0; i < wordsRequired; i++)
            {
                int toWrite = System.Math.Min(8, outputBytes - (i * 8));
                if (toWrite == 8)
                {
                    ThreefishEngine.WordToBytes(outputWords[i], outBytes, outOff + (i * 8));
                }
                else
                {
                    ThreefishEngine.WordToBytes(outputWords[i], currentBytes, 0);
                    Array.Copy(currentBytes, 0, outBytes, outOff + (i * 8), toWrite);
                }
            }
        }
コード例 #2
0
 public Configuration(long outputSizeBits)
 {
     bytes[0] = 83;
     bytes[1] = 72;
     bytes[2] = 65;
     bytes[3] = 51;
     bytes[4] = 1;
     bytes[5] = 0;
     ThreefishEngine.WordToBytes((ulong)outputSizeBits, bytes, 8);
 }
コード例 #3
0
ファイル: SkeinEngine.cs プロジェクト: PHAISON88/My2C2PPKCS7
            public Configuration(long outputSizeBits)
            {
                // 0..3 = ASCII SHA3
                bytes[0] = (byte)'S';
                bytes[1] = (byte)'H';
                bytes[2] = (byte)'A';
                bytes[3] = (byte)'3';

                // 4..5 = version number in LSB order
                bytes[4] = 1;
                bytes[5] = 0;

                // 8..15 = output length
                ThreefishEngine.WordToBytes((ulong)outputSizeBits, bytes, 8);
            }
コード例 #4
0
        private void Output(ulong outputSequence, byte[] outBytes, int outOff, int outputBytes)
        {
            byte[] array = new byte[8];
            ThreefishEngine.WordToBytes(outputSequence, array, 0);
            ulong[] array2 = new ulong[chain.Length];
            UbiInit(63);
            ubi.Update(array, 0, array.Length, array2);
            ubi.DoFinal(array2);
            int num = (outputBytes + 8 - 1) / 8;

            for (int i = 0; i < num; i++)
            {
                int num2 = Math.Min(8, outputBytes - i * 8);
                if (num2 == 8)
                {
                    ThreefishEngine.WordToBytes(array2[i], outBytes, outOff + i * 8);
                    continue;
                }
                ThreefishEngine.WordToBytes(array2[i], array, 0);
                global::System.Array.Copy((global::System.Array)array, 0, (global::System.Array)outBytes, outOff + i * 8, num2);
            }
        }
コード例 #5
0
        private void Output(ulong outputSequence, byte[] outBytes, int outOff, int outputBytes)
        {
            byte[] array = new byte[8];
            ThreefishEngine.WordToBytes(outputSequence, array, 0);
            ulong[] array2 = new ulong[this.chain.Length];
            this.UbiInit(63);
            this.ubi.Update(array, 0, array.Length, array2);
            this.ubi.DoFinal(array2);
            int num = (outputBytes + 8 - 1) / 8;

            for (int i = 0; i < num; i++)
            {
                int num2 = Math.Min(8, outputBytes - i * 8);
                if (num2 == 8)
                {
                    ThreefishEngine.WordToBytes(array2[i], outBytes, outOff + i * 8);
                }
                else
                {
                    ThreefishEngine.WordToBytes(array2[i], array, 0);
                    Array.Copy(array, 0, outBytes, outOff + i * 8, num2);
                }
            }
        }