public CommunicationProtocol(ICoderWithSettings coder, IHash coderHash, ICoderWithSettings decoder, IHash decoderHash)
        {
            _coder = coder;
            _decoder = decoder;
            _coderHash = coderHash;
            _decoderHash = decoderHash;

            ValidationKey = new ValidationKey();
            CipherSettings = new CipherSettingsViewModel();

            _coder.CurrentSatate = CipherSettings.InitBytesRegister;
            var sboxesArray = CipherSettings.SboxesArray;
            _coder.Sboxes = sboxesArray;
            _decoder.Sboxes = sboxesArray;
            getSboxesBytes(sboxesArray);
            CipherSettings.PropertyChanged += cipherSettingsViewModelOnPropertyChanged;
        }
        public CommunicationProtocol(ICoderWithSettings coder, IHash coderHash, ICoderWithSettings decoder, IHash decoderHash)
        {
            _coder       = coder;
            _decoder     = decoder;
            _coderHash   = coderHash;
            _decoderHash = decoderHash;

            ValidationKey  = new ValidationKey();
            CipherSettings = new CipherSettingsViewModel();

            _coder.CurrentSatate = CipherSettings.InitBytesRegister;
            var sboxesArray = CipherSettings.SboxesArray;

            _coder.Sboxes   = sboxesArray;
            _decoder.Sboxes = sboxesArray;
            getSboxesBytes(sboxesArray);
            CipherSettings.PropertyChanged += cipherSettingsViewModelOnPropertyChanged;
        }