Пример #1
0
        /// <summary>
        /// Первоначальная установка состояния шифра.
        /// </summary>
        /// <param name="iv">Синхропосылка.</param>
        /// <param name="subKeys">Подключи.</param>
        public void SetIV(byte[] iv, List <uint> subKeys)
        {
            byte[] encodedIV = substitution.EncodeProcess(iv, subKeys);

            n3 = BitConverter.ToUInt32(encodedIV, 0);
            n4 = BitConverter.ToUInt32(encodedIV, 4);
        }
Пример #2
0
        /// <summary>
        /// CFB encode.
        /// </summary>
        /// <param name="data">Opened message.</param>
        /// <param name="subKeys">Subkeys.</param>
        /// <returns>Encoded message.</returns>
        public byte[] EncodeProcess(byte[] data, List <uint> subKeys)
        {
            byte[] gamma = new byte[8];
            Array.Copy(BitConverter.GetBytes(n1), 0, gamma, 0, 4);
            Array.Copy(BitConverter.GetBytes(n2), 0, gamma, 4, 4);
            gamma = substitution.EncodeProcess(gamma, subKeys);

            byte[] res = XOR(gamma, data);

            if (res.Length == 8)
            {
                n1 = BitConverter.ToUInt32(res, 0);
                n2 = BitConverter.ToUInt32(res, 4);
            }

            return(res);
        }